작은 클라이언트 - 서버 응용 프로그램을 작성했습니다. 그것은 하나의 문자열을 클라이언트에서 서버로 전송해야하며 서버는 콘솔에 그것을 표시해야합니다. 그러나 서버는 항상 데이터를 기다립니다. 데이터가 서버에 오지 않는 것처럼 보입니다. 내가 뭘 잘못 했니?receive() 메서드가 클라이언트로부터 데이터를받지 못하는 이유는 무엇입니까?
public class UDPClient {
public static void main(String[] args) throws IOException {
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
DatagramSocket clientSocket = new DatagramSocket();
InetAddress IPAdress = InetAddress.getByName("localhost");
byte[] sendData = new byte[1024];
String sentence = inFromUser.readLine();
sendData = sentence.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAdress, 4445);
clientSocket.close();
}
}
public class UDPServer {
public static void main(String[] args) throws IOException {
DatagramSocket serverSocket = new DatagramSocket(4445);
byte[] receiveData = new byte[1024];
while(true) {
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
String sentence = new String(receivePacket.getData());
System.out.println("RECEIVED: " + sentence);
}
}
}
왜 서버와 클라이언트 모두 주 방법입니까? – Stultuske
어디 있을까요? 죄송합니다. 저는 네트워크 프로그래밍에 초보자입니다. –
@Stultuske main 메소드로 두 개의 클래스를 제공하면이 질문이 _excellent_ MCVE (최소, 완전하고 검증 가능한 예제, +1)가됩니다. 먼저 코드를 읽고 오류를 보지 못했습니다. 그래서 골동품이 있습니다. 내 IDE에 두 개의 빈 클래스를 만들고 기본 메소드를 붙여 넣었다. 30 초 이내에 문제가 재현되었습니다. 훌륭합니다. 그리고 WireShark와의 매우 짧은 조사 끝에 나는 그것을 해결했습니다. – blafasel