【发布时间】:2014-02-17 06:55:17
【问题描述】:
我目前很难理解为什么我的代码不起作用。我在下面包含了我的客户端和服务器代码。我发现我的问题发生在 while 循环的某个地方,但我不确定如何解决它,以免卡住。我在论坛上搜索了一段时间,有人说添加换行符可以解决问题,但我仍然遇到问题。
我的主要问题是如何避免流程卡住并且无法正常通信。有人能指出我正确的方向吗?
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();
}
}
}
【问题讨论】:
-
Server/client not sending or receiving data through socket [Java]? 或其他任意数量的可能重复项。如果您不使用
println(),则需要flush() -
我不使用 PrintWriter。怎么是复制品?你知道这是否直接适用于我的问题?
标签: java sockets tcp network-programming serversocket