真机Socket,Ip问题

Andy-java 2014-10-18 04:49:34
PC作为服务器,代码如下:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

/**
* 测试Android客户端与PC服务器通过socket进行交互
* 服务器端:接收客户端的信息并回送给客户
* @author Ameyume
*
*/
public class Server implements Runnable {
// public static final String SERVERIP = "192.168.1.97";
public static final int SERVERPORT = 12345;

public void run() {
try {
System.out.println("S: Connecting...");

ServerSocket serverSocket = new ServerSocket(SERVERPORT);
while (true) {
// 等待接受客户端请求
Socket client = serverSocket.accept();

System.out.println("S: Receiving...");

try {
// 接受客户端信息
BufferedReader in = new BufferedReader(
new InputStreamReader(client.getInputStream()));

// 发送给客户端的消息
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(client.getOutputStream())),true);

System.out.println("S: 111111");
String str = in.readLine(); // 读取客户端的信息
System.out.println("S: 222222");
if (str != null ) {
// 设置返回信息,把从客户端接收的信息再返回给客户端
out.println("You sent to server message is:" + str);
out.flush();

// 把客户端发送的信息保存到文件中
File file = new File ("C://android.txt");
FileOutputStream fops = new FileOutputStream(file);
byte [] b = str.getBytes();
for ( int i = 0 ; i < b.length; i++ )
{
fops.write(b[i]);
}
System.out.println("S: Received: '" + str + "'");
} else {
System.out.println("Not receiver anything from client!");
}
} catch (Exception e) {
System.out.println("S: Error 1");
e.printStackTrace();
} finally {
client.close();
System.out.println("S: Done.");
}
}
} catch (Exception e) {
System.out.println("S: Error 2");
e.printStackTrace();
}
}

public static void main(String [] args ) {
Thread desktopServerThread = new Thread(new Server());
desktopServerThread.start();

}
}
手机作为客户端,代码如下:
package com.example.firstclient;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

/**
* 测试Android客户端与PC服务器通过socket进行交互
* 客户端:把用户输入的信息发送给服务器
* @author Ameyume
*
*/
public class MainActivity extends Activity {
private static final String TAG = "Socket_Android";

private EditText mEditText = null;
private TextView tx1 = null;
private Button mButton = null;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mButton = (Button)findViewById(R.id.button1);
mEditText = (EditText)findViewById(R.id.editText1);
tx1 = (TextView)findViewById(R.id.textView2);

mButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
setTitle("测试Socket连接");
Socket socket = null;

try {
/* 指定Server的IP地址,此地址为局域网地址,如果是使用WIFI上网,则为PC机的WIFI IP地址
* 在ipconfig查看到的IP地址如下:
* Ethernet adapter 无线网络连接:
* Connection-specific DNS Suffix . : IP Address. . . . . . . . . . . . : 192.168.1.100
*/
InetAddress serverAddr = InetAddress.getByName("192.168.1.97");// TCPServer.SERVERIP
Log.d("TCP", "C: Connecting...");

// 应用Server的IP和端口建立Socket对象
socket = new Socket(serverAddr, 12345);
String message = "---Test_Socket_Android---";

Log.d("TCP", "C: Sending: '" + message + "'");

// 将信息通过这个对象来发送给Server
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())),
true);

// 把用户输入的内容发送给server
String toServer = mEditText.getText().toString();
Log.d(TAG, "To server:'" + toServer + "'");
out.println(toServer);
out.flush();


// 接收服务器信息
BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
// 得到服务器信息
String msg = in.readLine();
Log.d(TAG, "From server:'" + msg + "'");
// 在页面上进行显示
tx1.setText(msg);
} catch(UnknownHostException e) {
Log.e(TAG, "10.0.2.2 is unkown server!");
} catch(Exception e) {
e.printStackTrace();
} finally {
try {
socket.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}

});
}
}
服务端监听在192.168.1.97的12345端口,192.168.1.97是我本地IP,由dos->ipconfig得到的
先开启服务端,再运行客户端,报错如下:

我查到的是说IP或者端口问题,可不知怎么改?
...全文
281 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lonelyman 2014-10-18
  • 打赏
  • 举报
回复
我也遇到这个问题,不知道你解决了没?

790

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 其他移动相关
社区管理员
  • 移动开发其他问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧