サーバーソケットに問題があります。私はDatagramSocketを作成して、サーバーとクライアントの間でチャットを行います。Javaソケットサーバーのブロック
public static void main (String[] args) throws IOException {
byte[] send = new byte[1024];
byte[] receive = new byte[1024];
BufferedReader entree;
DatagramSocket serverSocket = null;
InetAddress ip;
InetAddress ipDest;
int port;
try {
serverSocket = new DatagramSocket(8888);
} catch (SocketException e) {
e.printStackTrace();
}
while (true) {
DatagramPacket recu = new DatagramPacket(receive, receive.length);
serverSocket.receive(recu);
String sentence = new String(recu.getData());
ipDest = recu.getAddress();
port = recu.getPort();
System.out.println("Reçu:"+sentence);
entree = new BufferedReader(new InputStreamReader(System.in));
String chaine = entree.readLine();
send = chaine.getBytes();
DatagramPacket dp = new DatagramPacket(send, send.length, ipDest, port);
serverSocket.send(dp);
send = new byte[1024];
receive = new byte[1024];
}
しかし、私はnew BufferedReader(new InputStreamReader(System.in))
を使用するには、次のものが送信するために取得し、それをブロックしています。だから、私はクライアントから来ているものを受け取ってそれを印刷することはできません。
どうすればこの手配ができますか?
Merci、
「同時に」送信と受信の両方ができるようにするには、別のスレッドに配置する必要があります。 – Reinard