套接字服务器/客户端有两个Android设备 [英] Socket Server/Client with two Android devices
本文介绍了套接字服务器/客户端有两个Android设备的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
所以我有一个平板电脑,我想基本上是让一个TCP(或UDP)套接字服务器等等多部手机可以发送数据给它。我也希望能够发送响应回电话。我至今不工作是什么?
服务器:
Log.i(服务器,启动服务器......);
尝试 {
ServerSocket的SS =新的ServerSocket(8080);
Log.i(服务器,服务器状态+ ss.isBound());
而(真){
//服务器等待客户这里,如果需要的话
插座S = ss.accept();
Log.i(服务器,服务器接受连接:+ s.isConnected());
BufferedReader中输入=新的BufferedReader(新的InputStreamReader(s.getInputStream()));
PrintWriter的输出=的新PrintWriter(s.getOutputStream(),TRUE); //自动刷新
Log.i(服务器,初始化输入和输出);
弦ST = input.readLine();
Log.i(服务器,从客户端:+ ST);
output.println(再见,感谢所有的鱼:));
}
}赶上(UnknownHostException异常E){
// TODO自动生成的catch块
e.printStackTrace();
}赶上(IOException异常E){
// TODO自动生成的catch块
e.printStackTrace();
}
和客户端(手机):
尝试{
插座S =新的Socket(192.168.0.106,8080);
//输出流重定向到插座
的OutputStream出= s.getOutputStream();
PrintWriter的输出=的新PrintWriter(出);
output.println(你好Android的!);
BufferedReader中输入=新的BufferedReader(新的InputStreamReader(s.getInputStream()));
//读线(S)
弦ST = input.readLine();
tv.setText(ST);
//关闭连接
S.CLOSE();
}赶上(UnknownHostException异常E){
// TODO自动生成的catch块
e.printStackTrace();
}赶上(IOException异常E){
// TODO自动生成的catch块
e.printStackTrace();
}
解决方案
有可能是您的客户端不刷新的println
尝试要么在构造函数中指定自动冲洗
PrintWriter的输出=的新PrintWriter(满分,真);
或手动添加下面冲洗打印
output.println(你好Android的!);
output.flush();
So I have a tablet and I want to basically make it a TCP (or UDP) Socket Server so multiple phones can send data to it. I also want to be able to send responses back to the phones. What I have so far isn't working...
Server:
Log.i("Server", "Starting server...");
try {
ServerSocket ss = new ServerSocket(8080);
Log.i("Server", "Server status: " + ss.isBound());
while(true){
//Server is waiting for client here, if needed
Socket s = ss.accept();
Log.i("Server", "Server is accepting connections: " + s.isConnected());
BufferedReader input = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter output = new PrintWriter(s.getOutputStream(),true); //Autoflush
Log.i("Server", "Initialized input and output");
String st = input.readLine();
Log.i("Server", "From client: "+st);
output.println("Good bye and thanks for all the fish :)");
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
And client (phone):
try {
Socket s = new Socket("192.168.0.106", 8080);
//outgoing stream redirect to socket
OutputStream out = s.getOutputStream();
PrintWriter output = new PrintWriter(out);
output.println("Hello Android!");
BufferedReader input = new BufferedReader(new InputStreamReader(s.getInputStream()));
//read line(s)
String st = input.readLine();
tv.setText(st);
//Close connection
s.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
解决方案
It is likely that your client is not flushing the println
Try either specifying autoflush in your constructor
PrintWriter output = new PrintWriter(out, true);
or manually adding a flush below your print
output.println("Hello Android!");
output.flush();
这篇关于套接字服务器/客户端有两个Android设备的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文