2016-10-16 2 views
1

소켓 프로그래밍 및 네트워크에 익숙하지 않으므로 배울 수 있도록 도와주세요.UDP 채팅에 들어오는 요청이 있는지 확인하는 방법은 무엇입니까?

노드가 채팅 네트워크에 연결된 모든 피어에게 메시지를 보낼 수있는 UDP 채팅 응용 프로그램을 만들고 있습니다.

들어오는 패킷이 있는지 어떻게 확인합니까? 들어오는 패킷이 없으면 패킷을 보내고 들어오는 패킷이 있으면 수신하여 보낸다.

의견을 보내 주셔서 감사합니다. 코드가 사용자의 입력을 기다립니다,

while(true){   
    String sendsentence2 = inFromUser.readLine(); 
    String[] arg = sendsentence2.split(","); 
    if(arg.length==3){ 
     System.out.println("File transfer initiated!!"); 
    }else{ 
     byte[] receiveData2 = new byte[40]; 
     byte[] sendData2 = new byte[40]; 
     sendData2 = sendsentence2.getBytes(); 
     DatagramPacket sendPacket2 = new DatagramPacket(sendData2, sendData2.length, BroadCastAddress, 9876); 
     serverSocket.send(sendPacket2); 
     DatagramPacket receivePacket2 = new DatagramPacket(receiveData2, receiveData2.length); 
     serverSocket.receive(receivePacket2); 
     String sentence2 = new String(receivePacket2.getData());       
     InetAddress replyIPAddress = receivePacket2.getAddress(); 
     System.out.println("Received from " + replyIPAddress + " : " + sentence2); 
    } 
} 

이 방법 : 아래

는 코드입니다. 모든 노드에 동일한 코드를 배포해야하며 동일한 코드가 배포 된 경우 모든 노드는 먼저 패킷을 보내고 다른 노드는 수신하지 않습니다.

+0

코드를 표시하십시오. – saurav

+0

질문을 수정했습니다. 미리 감사드립니다 @ 사우론 –

답변

0

소켓을 청취하고 소켓에 데이터를 보내려면 다중 스레드 프로그래밍을 사용해야합니다. 동시

+0

네. 그 주위에 다른 방법이 있는지 궁금 해서요. 나는 대학 프로젝트의 일환으로 채팅 응용 프로그램을 만들었고, 그 모든 것을 향상시킬 수 있는지 궁금해하고있었습니다. 혼란을 씻어 주셔서 감사합니다 @AzhirAhmadi :) –

+0

당신은 비 블로킹 소켓을 사용할 수 있습니다 – AzhirAhmadi

관련 문제