마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

udp 1:다 통신을 하고 싶은데요

0 추천

안녕하세요제가 udp 통신인데 1대 다 형식으로 구현하려 합니다

 

1:1은 문제가 없구요

 

1:1인 상태에서 클라가 서버에 하나 더 붙으면 서버에 수신 쓰레드안에 있는 receive 가 블럭이 되더군요

 

안붙으면 1:1 통신 잘됩니다

 

혹시 해결해보신분있으면 답변 부탁드리겠습니다

 

아래는 제가 구현한 부분입니다

 

onCreate

{

...

try {
socket=new MulticastSocket(8080);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
...

}

public class RecvData extends Thread
{
@Override 
public void run()
{
int recv_port;
//TODO Auto-generated method stub
       
//ma.notice.setText("Server start");
StrictMode.enableDefaults();
 
try
{   
       byte[] buf = new byte[17];
       
  //while(true)
  //{
 
byte[] buffer = new byte[1000];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
 
socket.receive(packet);
 
recv_port=packet.getPort();
 
Message message=handler.obtainMessage();
           Bundle bundle = new Bundle();
           String udp_data = new String(packet.getData());
           //bundle.putString("udp_recv_data", udp_data);
           clientAddr = packet.getAddress();
           bundle.putString("udp_recv_data", clientAddr.toString());
           message.setData(bundle);
           handler.sendMessage(message);
           
String answer="029003";
buf = answer.getBytes();
packet = new DatagramPacket(buf, buf.length, packet.getAddress(), recv_port);
           socket.send(packet);
           
  //}
           //socket.close();
}
catch (Exception e)
{   
Log.e("UDP", "S RecvThread: Error", e); 
//Data_Screen.setText(e.getMessage());
}
udp_start=0;
}
 
}

 

갈로 (690 포인트) 님이 2014년 1월 3일 질문

1개의 답변

0 추천
socket.getInputStream().available() > 0 일때에만 read 하시면 안될까요?
철수야안녕 (6,120 포인트) 님이 2014년 1월 3일 답변
댓글 주셔서 감사합니다 지금은 DatagramSocket 을 쓰고 있습니다
하위에 봤는데 getInputStream() 메소드가 없더군요
별거 아닐지 알았는데 어렵네요;
...