2017-02-22 17 views
-1

Когда я говорю socket = new Socket (serverAddr, PORT); в android, какой тип сокета открывается? UDP-сокет или TCP-сокет?socket = new Socket (serverAddr, PORT);

Я пытаюсь отправить данные с моего андроида и прочитать его с моего ПК. Я читаю его из сценария C# приемника UDP (Unity3D). Но мои отчеты об андроидах Время ожидания отключено.

Мой вопрос в том, какой тип разъема открывается андроид?

+2

'Socket.connect' открывает TCP сокет Чтобы использовать UDP , вам нужно создать 'DatagramSocket' – ControlAltDel

+0

https://developer.android.com/reference/java/net/DatagramSocket.html – Fildor

+0

Спасибо, эта помощь редактор Я пытался прочитать данные акселерометра на своем телефоне с моего компьютера в режиме реального времени. Я открыл tcp-соединение, чтобы получить поток данных через Wi-Fi. Но есть некоторое отставание. Что это лучший способ сделать это? Является ли wifi правильным методом, или я должен попробовать Bluetooth? В конечном итоге мой телефон должен передавать данные, как беспроводная мышь. – sujay

ответ

-1

Вы использовали от tcp. для использования сокета UDP, используя ниже пример кода:

код сервера:

public class udp_server 
{ 
public static void main(String args[]) 
{ 
    DatagramSocket sock = null; 

    try 
    { 
     //1. creating a server socket, parameter is local port number 
     sock = new DatagramSocket(7777); 

     //buffer to receive incoming data 
     byte[] buffer = new byte[65536]; 
     DatagramPacket incoming = new DatagramPacket(buffer, buffer.length); 

     //2. Wait for an incoming data 
     echo("Server socket created. Waiting for incoming data..."); 

     //communication loop 
     while(true) 
     { 
      sock.receive(incoming); 
      byte[] data = incoming.getData(); 
      String s = new String(data, 0, incoming.getLength()); 

      //echo the details of incoming data - client ip : client port - client message 
      echo(incoming.getAddress().getHostAddress() + " : " + incoming.getPort() + " - " + s); 

      s = "OK : " + s; 
      DatagramPacket dp = new DatagramPacket(s.getBytes() , s.getBytes().length , incoming.getAddress() , incoming.getPort()); 
      sock.send(dp); 
     } 
    } 

    catch(IOException e) 
    { 
     System.err.println("IOException " + e); 
    } 
} 

//simple function to echo data to terminal 
public static void echo(String msg) 
{ 
    System.out.println(msg); 
} 
} 

Client Код:

public class udp_client 
{ 
public static void main(String args[]) 
{ 
    DatagramSocket sock = null; 
    int port = 7777; 
    String s; 

    BufferedReader cin = new BufferedReader(new InputStreamReader(System.in)); 

    try 
    { 
     sock = new DatagramSocket(); 

     InetAddress host = InetAddress.getByName("localhost"); 

     while(true) 
     { 
      //take input and send the packet 
      echo("Enter message to send : "); 
      s = (String)cin.readLine(); 
      byte[] b = s.getBytes(); 

      DatagramPacket dp = new DatagramPacket(b , b.length , host , port); 
      sock.send(dp); 

      //now receive reply 
      //buffer to receive incoming data 
      byte[] buffer = new byte[65536]; 
      DatagramPacket reply = new DatagramPacket(buffer, buffer.length); 
      sock.receive(reply); 

      byte[] data = reply.getData(); 
      s = new String(data, 0, reply.getLength()); 

      //echo the details of incoming data - client ip : client port -  client message 
      echo(reply.getAddress().getHostAddress() + " : " +   reply.getPort() + " - " + s); 
     } 
    } 

    catch(IOException e) 
    { 
     System.err.println("IOException " + e); 
    } 
} 

//simple function to echo data to terminal 
public static void echo(String msg) 
{ 
    System.out.println(msg); 
} 
}