android模拟器做socket服务端,接收不到数据。麻烦各位帮我看看
各位大大,下面是小弟自己写得一个android做socket服务端的代码,但是在模拟器上运行时接收不到数据,客户端显示连接不到socket服务器(已经做了端口重定向)。麻烦各位帮我看看是代码的问题,还是模拟器设置或者其他的问题。谢谢啦!!
代码如下:
package study.message.receive;--------------------编程问答-------------------- 看下logcat
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"/>
--------------------编程问答-------------------- readLine好像要\n结尾的字符串,我用了你的代码试了一下,字符串末尾没有/n就卡在readLine那里,有就可以读了。readLine这种函数真傻,提供一个类似于read(void* data, int length)这样的多好啊。。。 --------------------编程问答-------------------- 我也接收不到信息
补充:移动开发 , Android