일단 소스 아주 간단한건데요 로컬 피씨(한피씨)에서 2개의 클라이언트 서버 돌리면 아주 잘 됩니다. 문제는 제가 클라이언트를 안드로이드폰으로하고 서버를 피씨로 하는데 같은 공유기를 쓰고있고 혹시나몰라서 포트포워딩까지 다 해도 클라이언트에서는 분명 send를 해서 데이터패킷을 보내는데 서버에서 socket.receive(packet); 이부분에서 받질 않습니다.. 도대체 어떻게 해야 받게 하는지 정말 미칠노릇이네요 고수분들 답좀 부탁드려요
클라이언트 권한 전부 줬구요 특별한 에러가 생기는 것도 아니고 클라이언트 서버 둘다 전부 스레드를 사용하고 있습니다 소스는 스레드 안에서 그냥 예제소스를 넣은것입니다.
-----------------클라이언트 소스----------------------------------
try
{
while (true)
{
// 전송할 DatagramPacket 생성
DatagramPacket packet = new DatagramPacket("REFRESH".getBytes(),7, InetAddress
.getByName("192.168.88.1"), 5000);
// DatagramSocket 생성
DatagramSocket socket = new DatagramSocket();
socket.setReceiveBufferSize(MAX);
// DatagramPacket 전송
socket.send(packet);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
socket.close();
}
} catch (UnknownHostException e){
e.printStackTrace();
} catch (SocketException e){
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
}
------------------서버소스--------------------------
socket = new DatagramSocket(5000);
while (true)
{
try
{
// 데이터를 받을 버퍼
byte[] inbuf = new byte[256];
// 데이터를 받을 Packet 생성
DatagramPacket packet = new DatagramPacket(inbuf, inbuf.length);
// 데이터 수신
// 데이터가 수신될 때까지 대기됨
socket.receive(packet);
// 수신된 데이터 출력`
System.out.println("received length : " + packet.getLength() + ", received data : "
+ new String(packet.getData(), 0, packet.getLength()));
} catch (IOException e)
{
e.printStackTrace();
}
}
당최안되는 이유를 모르겠는데 혹시 이유좀 아시는분 있으신가요 ㅠㅠ