【发布时间】:2011-11-15 04:17:40
【问题描述】:
编辑:下面的代码没有抛出异常,但没有输出并挂起。它应该输出“测试消息”。在 main() 中,我们启动了一个线程,该线程给定了一个监听随机端口的服务器套接字。主线程尝试在同一个随机端口上与 ServerSocket 连接并通信,但显然失败了。为什么?
public class IntraProcSockTest {
private static int port;
private class Listener extends Thread {
public Listener() {
}
public void run() {
try {
ServerSocket serverSocket = new ServerSocket(0);
port = serverSocket.getLocalPort();
Socket socket = serverSocket.accept();
BufferedReader in;
String fromClient;
in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
while ((fromClient = in.readLine()) != null) {
System.out.println("From client: " + fromClient);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public IntraProcSockTest() {
new Listener().start();
}
public static void main(String[] args) {
new IntraProcSockTest();
try {
Thread.sleep(5000);
Socket socket = new Socket("localhost", port);
PrintWriter socketOut = new PrintWriter(socket.getOutputStream());
socketOut.println("Test message");
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
【问题讨论】:
-
另见example。
-
已解决:我必须刷新套接字:忘记使用自动刷新
标签: java