我正在制作一个客户端-服务器应用程序,并使用以下代码在服务器和客户端之间交换数据。
服务器的发送和接收代码:
public void run() {
try {
BufferedReader input = new BufferedReader(new InputStreamReader(socketNew.getInputStream()));
String message=input.readLine();
while(message.length()!=0)
{
for(Socket s:socs) //socs is a list containing all the connected sockets
{
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
writer.write(message);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
客户端发送方法:
private void send_data() {
BufferedWriter writer;
try {
writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
writer.write(this.name+textField.getText());
textField.setText("");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
客户端接收方法:
public void receive_data(){
BufferedReader input;
try {
input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String message=input.readLine();
while(message.length()!=0)
{console(message);}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我没有在服务器和客户端之间进行任何数据交换。有人可以帮助我吗?
您正在遭受缓冲的困扰:消息被写入缓冲区中并且可能从未发送。刷新写入器以确保它发送数据:
writer.write(...);
writer.flush();
另外,BufferedReader.readLine 读取行。行必须以换行符结束,例如\n
。目前尚不清楚您是否发送换行符。
另外,这是一个无限循环:
String message=input.readLine();
while(message.length()!=0) {
/* code that does not modify message */
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)