首页 > 解决方案 > Java 线程套接字(PrintWriter 和 BufferedReader)

问题描述

我正在尝试只使用两个类——ServerSocket 和 Socket 创建一个游戏。一切都必须在 TCP(而不是 UDP)上,而架构必须是 P2P。这个游戏的运作方式是一个玩家选择一个数字,然后另一个玩家选择一个数字,然后从其中一个(无论哪个)开始倒计时。我遇到了一个问题。我在两个客户端之间建立了连接,并且两者都可以输入选定的号码。我不知道为什么我不能将此号码发送给另一个客户。是Socket不能同时发送和接收消息的问题吗?我读过有可能使用两个单独的线程(一个接收数据,另一个发送)来执行此操作,但我不知道具体如何。

@Override
public void run() {
    BufferedReader br = new BufferedReader(new InputStreamReader(System. in ));
    PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);

    System.out.println("PICK A NUMBER:");
    while (!br.ready()) {
        Thread.sleep(500);
    }
    Integer numberGamePicked = Integer.parseInt(br.readLine());
    Thread.sleep(500);
    out.println(numberGamePicked);
    Thread.sleep(1000);

    BufferedReader in =new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
    int whatOpponentSend = Integer.parseInt( in .readLine());
    System.out.println("RECEIVED " + whatOpponentSend);
}

当然,到目前为止,一切都在 run() 方法中。是他们两个同时执行相同的代码的问题吗?

标签: javamultithreadingsocketstcp

解决方案


推荐阅读