各位大大,下面是小弟自己写得一个android做socket服务端的代码,但是在模拟器上运行时接收不到数据,客户端显示连接不到socket服务器(已经做了端口重定向)。麻烦各位帮我看看是代码的问题,还是模拟器设置或者其他的问题。
谢谢啦!!
代码如下:
package study.message.receive;import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;public class Message_ReceiveActivity extends Activity {
/** Called when the activity is first created. */
private TextView msg_rec;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.message_receive);
findViews();
Thread socketServer=new Thread(new AndroidServer());
socketServer.start();
}
private void findViews()
{
msg_rec = (TextView) findViewById(R.id.msg_receive);
}
class AndroidServer extends Thread
{
public void run() {
try {
ServerSocket serverSocket=new ServerSocket(12345);
while(true)
{
msg_rec.setText("等待接收用户连接:");
//接受客户端请求
Socket client=serverSocket.accept();
try
{
//接受客户端信息
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
String str=in.readLine();
msg_rec.setText("read: "+str);
//向服务器发送消息
PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(client.getOutputStream())),true);
out.println("return "+str);
in.close();
out.close();
}catch(Exception ex)
{
System.out.println(ex.getMessage());
ex.printStackTrace();
}
finally
{
client.close();
}
}
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
}
谢谢啦!!
代码如下:
package study.message.receive;import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;public class Message_ReceiveActivity extends Activity {
/** Called when the activity is first created. */
private TextView msg_rec;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.message_receive);
findViews();
Thread socketServer=new Thread(new AndroidServer());
socketServer.start();
}
private void findViews()
{
msg_rec = (TextView) findViewById(R.id.msg_receive);
}
class AndroidServer extends Thread
{
public void run() {
try {
ServerSocket serverSocket=new ServerSocket(12345);
while(true)
{
msg_rec.setText("等待接收用户连接:");
//接受客户端请求
Socket client=serverSocket.accept();
try
{
//接受客户端信息
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
String str=in.readLine();
msg_rec.setText("read: "+str);
//向服务器发送消息
PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(client.getOutputStream())),true);
out.println("return "+str);
in.close();
out.close();
}catch(Exception ex)
{
System.out.println(ex.getMessage());
ex.printStackTrace();
}
finally
{
client.close();
}
}
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
}
看下PC能不能ping通你的模拟器
加访问网络权限没 <uses-permission android:name="android.permission.INTERNET"/>