2017-02-22 7 views
-1

私はsocket = new Socket(serverAddr、PORT)と言っています。どのような種類のソケットが開かれていますか? UDPソケットまたはTCPソケット?ソケット=新しいソケット(serverAddr、PORT);

私はアンドロイドからデータを送信し、自分のPCからデータを読み取ろうとしています。私はUDP受信機のC#スクリプト(Unity3D)からそれを読んでいます。しかし、私のアンドロイドはConnectionのタイムアウト例外を報告します。

私の質問は、どのタイプのソケットがAndroidで開けますか?

+2

'Socket.connect'はUDPを使用するにはTCPソケット を開き、サンプルコードの下に使用してUDPソケットを使用するための、あなたは 'DatagramSocket'を作成する必要があります – ControlAltDel

+0

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

+0

ありがとう、そのヘルプed。私は自分の携帯電話の加速度計データをPCからリアルタイムで読み込もうとしていました。私はWiFi経由でデータストリームを取得するためにTCP接続を開いた。しかし、いくつかの遅れがあります。これを行う良い方法は何ですか? Wi-Fiは正しい方法ですか、それともBluetoothを試すべきですか?最終的に私の携帯電話はワイヤレスマウスのようなデータを送信する必要があります。 – sujay

答えて

-1

あなたはtcpから使用しました。

Serverコード

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); 
} 
} 

クライアントコード

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); 
} 
} 
関連する問題