我正在尝试用 Java 创建一个非常简单的 Socket
/ServerSocket
程序。下面列出了我的两个类,它们都在同一台机器上运行。问题是,连接似乎建立得很好,但是当我尝试从客户端向服务器写入套接字时,似乎没有发生任何事情。服务器永远不会从 in.readLine()
返回,并且程序会停止。我不明白为什么会发生这种情况。
这是我的类(class):
TheServer.java:
public class TheServer {
public static void main(String[] args) {
BufferedReader in = null;
PrintWriter out = null;
try {
ServerSocket serv = new ServerSocket(2255);
Socket sock = serv.accept();
in = new BufferedReader(
new InputStreamReader(sock.getInputStream()));
out = new PrintWriter(sock.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Connection established by Server");
try {
String line;
while ((line = in.readLine()) != "Bye") {
System.out.println(line + "Received");
out.println(line.toUpperCase());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
TheClient.java:
public class theClient {
public static void main(String[] args) {
BufferedReader in = null;
PrintWriter out = null;
try {
Socket sock = new Socket("localhost", 2255);
in = new BufferedReader(
new InputStreamReader(sock.getInputStream()));
out = new PrintWriter(sock.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("Connection established by Client");
try {
while (true) {
BufferedReader read = new BufferedReader(new InputStreamReader(
System.in));
String line = read.readLine();
out.println(line.trim());
System.out.println(in.readLine().trim());
if (line == "Bye")
break;
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
最佳答案
对于 PrintWriter 对象,每次写入尝试后,
obj.flush();
关于java - Java 中的基本 Socket 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21820635/