我目前很难理解为什么我的代码不工作。我在下面列出了我的客户端和服务器代码。我发现我的问题发生在while循环的某个地方,但我不确定如何修复它,以免它卡住。我在论坛上搜索了一段时间,有人说添加一个换行符会解决它,但我仍然有麻烦。Java TCP客户端服务器挂起?
我的主要问题是如何避免过程卡住和通信不正常。外面的任何人都能指引我走向正确的方向吗?
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class My_Client {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket s = new Socket("localhost", 5555);
BufferedReader r = new BufferedReader(new InputStreamReader(
s.getInputStream()));
PrintStream w = new PrintStream(s.getOutputStream());
w.print("hello world");
w.print('\n');
String line;
while ((line = r.readLine()) != null) {
System.out.println("Received: " + line);
//System.out.println("Error");
}
w.close();
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
-----------------------------------------------------------------
public class My_Server {
private static final int PORT = 5555;
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(PORT);
System.out.println("Server Socket Created");
while (true) {
System.out.println("Waiting on connection");
Socket cs = ss.accept();
System.out.println("Client connected");
BufferedReader r = new BufferedReader(new InputStreamReader(
cs.getInputStream()));
PrintStream w = new PrintStream(cs.getOutputStream());
String line;
while ((line = r.readLine()) != null) {
w.print(line + "!!!!");
w.print('\n');
}
System.out.println("Client disconnected");
r.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
可能重复[服务器/客户端不通过套接字\ [Java \]发送或接收数据?](http://stackoverflow.com/questions/21199644/server-client-not-sending-or-receiving-data通过套接字-java)或其他任何数量的。如果您不使用println(),则需要'flush()' –
尽管我没有使用PrintWriter。这是如何重复的?你知道这是否直接适用于我的问题? –