2013-12-17 2 views
0

나는 안드로이드에서 시작하고 내 첫 번째 응용 프로그램에서 안드로이드 테이블과 PC 간의 통신을 설정해야합니다. 통신은 필자가 필요로하는 고정 IP에 의해 직접적으로 이루어지며, 필자는 여러 대의 PC와 태블릿을 가지고있을 때마다 각 테이블은 PC와 통신 만한다.안드로이드 타블렛과 PC 사이의 통신

PC로 태블릿에서의 통신은 이미 작동하고 있지만, 테이블에 PC에서 나는 데이터가 옮겨진 얻을 수

안드로이드 사이드

public class Server implements Runnable 
{ 
    @Override 
    public void run() 
    { 
     while (always==true) 
     { 
      while(start2==false) 
      { 
      } 
      try 
      { 
       InetAddress serverAddr = InetAddress.getByName("192.168.173.133"); 
       updatetrack("\nServer: Start connecting\n"); 
       //*DatagramSocket socket = new DatagramSocket(SERVERPORT2, serverAddr);/ 
       DatagramSocket socket = new DatagramSocket(SERVERPORT2); 

       byte[] buf = new byte[17]; 
       DatagramPacket packet = new DatagramPacket(buf, buf.length, serverAddr, SERVERPORT2); 
       //*DatagramPacket packet = new DatagramPacket(buf, buf.length);/ 
       updatetrack("Server: Receiving\n"); 
       socket.receive(packet); 
       updatetrack("Server: Message received: '" + new String(packet.getData()) + "'\n"); 
       updatetrack("Server: Succeed!\n"); 
       start2=false; 

      } 
      catch (Exception e) 
      { 
       updatetrack("Server: Error!\n"); 
       start2=false; 
      } 
     } 
    } 
}  

192.168.173.133는 IP와 SERVERPORT2 인 테이블 4445 나는 그것을 표시 한 후 데이터를 기다리는 남아있는 응용 프로그램을 시작하면 "서버 : 수신"하지만

C# 코드

,691,363을 (210)
public static void Main() 
{ 
     IPEndPoint iep2 = new IPEndPoint(IPAddress.Parse("192.168.173.133"), 4445); 
     string hostname = Dns.GetHostName(); 
     byte[] data = Encoding.ASCII.GetBytes(hostname); 
     sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1); 
     sock.SendTo(data, iep2); 
     sock.Close(); 
} 

내가 어떤 바보 내가 잊어 버린하고 생각이라고 생각하지만, 많은 포럼과 책을 읽은 후 나는

어떤 조언이

답변

0

당신은 UDP 연결 및 socket.receive을 사용 환영합니다이 시점에서 중지하고 (패킷)은 패킷을 기다리지 않습니다. 버퍼 내에 패킷이없는 경우,이 조작은 예외를 슬로우합니다. 코드를 다음으로 변경하십시오.

@Override 
    public void run() 
    { 
     while (always==true) 
     { 
      while(start2==false) 
      { 
      } 
      try 
      { 
       InetAddress serverAddr = InetAddress.getByName("192.168.173.133"); 
       updatetrack("\nServer: Start connecting\n"); 
       //*DatagramSocket socket = new DatagramSocket(SERVERPORT2, serverAddr);/ 
       DatagramSocket socket = new DatagramSocket(SERVERPORT2); 

       while (always==true) 
       { 
       try{ 
       byte[] buf = new byte[17]; 
       DatagramPacket packet = new DatagramPacket(buf, buf.length, serverAddr, SERVERPORT2); 
       //*DatagramPacket packet = new DatagramPacket(buf, buf.length);/ 
       updatetrack("Server: Receiving\n"); 
       socket.receive(packet); 
       updatetrack("Server: Message received: '" + new String(packet.getData()) + "'\n"); 
       updatetrack("Server: Succeed!\n"); 
       start2=false; 
       } 
       catch(Exception ex) {ex.printStackTrace();} 
       } 


      } 
      catch (Exception e) 
      { 
       updatetrack("Server: Error!\n"); 
       start2=false; 
      } 
     } 
    } 
+0

Alexander, 고맙습니다. – josocjo

관련 문제