2016-12-15 1 views
1

다음 UDP 클라이언트 및 servcer 클래스가 있는데 로컬 호스트와 포트에서 동일한 Java 프로젝트의 다른 클래스 'UDPServer'로 UDPClient의 일부 문자열을 보내려고합니다. 7777. UDPServer 클래스의 UDPClient 클래스에서 아무것도 수신하지 못하는 문제에 직면하고 있습니다. 문제가있는 사람은 누구입니까?UDPServer가 UDPClient에서 보낸 데이터를받지 못했습니다.

감사합니다. 당신이 코드가 확인 작동하기 때문에

UDPClient

import java.net.DatagramPacket; 
import java.net.DatagramSocket; 
import java.net.InetAddress; 


class UDPClient { 

    public static void main(String args[]) throws Exception { 
     String aString = "Hello World"; 
     DatagramSocket clientSocket = new DatagramSocket(); 
     InetAddress IPAddress = InetAddress.getByName("localhost"); 
     byte[] sendData = new byte[1024]; 
     byte[] receiveData = new byte[1024]; 
     sendData = aString.getBytes(); 
     DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 7777); 
     clientSocket.send(sendPacket); 
     DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); 
     clientSocket.receive(receivePacket); 
     String modifiedSentence = new String(receivePacket.getData()); 
     System.out.println("FROM SERVER:" + modifiedSentence); 
     clientSocket.close(); 
    } 
} 

UDPServer

import java.net.DatagramPacket; 
import java.net.DatagramSocket; 
import java.net.InetAddress; 


class UDPServer { 

     public static void main(String args[]) throws Exception { 
      DatagramSocket serverSocket = new DatagramSocket(7777); 
      byte[] receiveData = new byte[1024]; 
      byte[] sendData = 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); 
       InetAddress IPAddress = receivePacket.getAddress(); 
       int port = receivePacket.getPort(); 
       String capitalizedSentence = sentence.toUpperCase(); 
       sendData = capitalizedSentence.getBytes(); 
       DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port); 
       serverSocket.send(sendPacket); 
      } 
     } 
} 
+0

데이터 그램 서버에 대한 예외가 있습니까? – thepaulo

+0

@Sonor 아니요 어떤 오류나 예외는 발생하지 않습니다. – water

+0

코드가 내 컴퓨터에서 의도 한대로 작동하는 것 같습니다. – scsere

답변

1

안녕하세요, 포트 할당에 무엇을 잘못 확인하려고합니다.

은 서버를 시작하고이 명령을 실행

:

윈도우

netstat -aon | FINDSTR 7777 

리눅스 :

netstat -aon | grep 7777 

PID가 동일한 경우 UDPServer가 실행으로 당신은 PID 체크를 볼 수 있습니다. 또한 방화벽에 문제가 있는지 확인하십시오.

+0

방화벽을 제어 할 수 있으면 일시적으로 전체 방화벽을 비활성화하십시오. 문제가 해결되면 들어오는 데이터를 수신하는 모든 서버에 대한 방화벽 규칙을 만들어야합니다. 클라이언트는 문제없이 방화벽을 통해 데이터를 보낼 수 있어야합니다. – zooropa

관련 문제