无法使用BufferedReader / Writer在套接字上发送和接收数据 [英] Cannot send and receive data using BufferedReader/Writer on sockets
问题描述
我正在制作一个客户端 - 服务器应用程序,并使用以下代码在服务器和客户端之间交换数据。
I am making a client-server application and am using the following code for the exchange of data b/w the server and clients.
服务器的发送和接收代码:
Server's send and receive code:
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();
}
}
我没有任何数据交换b / w服务器和客户端。有人帮我吗?
I am not having any data exchange b/w the server and the clients.Can someone help me please?
推荐答案
一个缓冲区,可能从来没有发送过。刷新写入程序以确保它发送数据:
You are suffering from buffering: message is written in a buffer and probably never sent. Flush the writer to ensure it sends data:
writer.write(...);
writer.flush();
此外,BufferedReader.readLine读取行。行必须以换行符结束,例如 \\\
。
Also, BufferedReader.readLine reads lines. Lines have to be terminated with a line break, such as \n
. It's not clear if you are sending line breaks.
此外,这是一个无限循环:
Also, this is an infinite loop:
String message=input.readLine();
while(message.length()!=0) {
/* code that does not modify message */
}
这篇关于无法使用BufferedReader / Writer在套接字上发送和接收数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!