안녕하세요 며칠째 udp 로 삽질하고 있는 뉴비입니다
피씨와 스마트폰간에 udp 통신을 하고자 합니다
일단 자세한건 밑에부터;;
onCreate()
안에는 try {
socket = new DatagramSocket(SERVERPORT);
socket.setBroadcast(true);
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
clientAddr=InetAddress.getByName("192.168.43.58");
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
udp_send = new SendData();
udp_recv = new RecvData();
udp_send.start();
udp_recv.start();
이렇게 넣었구요
송수신 쓰레드는 아래와 같습니다
public class RecvData extends Thread
{
@Override
public void run() {
// 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);
//String s="Test!";
//packet = new DatagramPacket(s.getBytes(), s.getBytes().length, clientAddr, clientPort);
//Log.d("UDP", "S: Sending: '" + s + "'");
socket.send(packet);
// 패킷의 데이터는 버리고, 아이피주소만 핸들러로 전송
Message message = handler.obtainMessage(1, packet.getAddress().getHostAddress());
handler.sendMessage(message);
}
}
catch (Exception e)
{
Log.e("UDP", "S: Error", e);
}
}
public void onClose()
{
socket.close();
}
public void close()
{
socket.close();
}
}
//public void SendData(String data)
public class SendData extends Thread
{
public void run()
{
/* By magic we know, how much data will be waiting for us */
//byte[] buf = new byte[17];
/* Prepare a UDP-Packet that can
* contain the data we want to receive */
StrictMode.enableDefaults();
try
{
Log.d("SOCKET : " ,socket.toString());
packet = new DatagramPacket(data.getBytes(), data.getBytes().length, InetAddress.getByName(CLIENTIP), SERVERPORT);
Log.d("UDP", "S: Sending: '" + data + "'");
socket.send(packet);
}
catch(IOException e)
{
Log.d("Send IOException : ", e.getMessage());
e.printStackTrace();
}
/*
catch(UnknownHostException e)
{
Log.d("Send UnknownException : ", e.getMessage());
}
*/ catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
일단 제쪽에서 수신후 송신은 됩니다 (특정시간 동안만요)
근데 제쪽에서 먼저 송신을 하려고 하면 송신이 되지 않습니다
뭐가 문제일까요;