2014-12-02 1 views
0

Я пытаюсь подключиться к сокету от клиента к серверу с помощью Wi-Fi прямой, так что я этот код на сервере:Как подключить розетку с андроидом, используя Wi-Fi прямой

ServerSocket serverSocket = new ServerSocket(2009); 
Socket client = serverSocket.accept(); 

и у меня есть это код на клиенте

final WifiP2pDevice peer = wifiP2pDeviceList.get("aMacAddress"); 
      WifiP2pConfig config = new WifiP2pConfig(); 
          config.deviceAddress=peer.deviceAddress; 
          mManager.connect(mChannel,config,new WifiP2pManager.ActionListener() { 
           @Override 
           public void onSuccess() { 
            mManager.requestGroupInfo(mChannel,new WifiP2pManager.GroupInfoListener() { 
             @Override 
             public void onGroupInfoAvailable(WifiP2pGroup group) { 

              try { 
               Socket socket = new Socket(); 

               int port = 2009; 

               int timeout = 5000; 
               socket.bind(null); 

               socket.connect((new InetSocketAddress(peer.deviceAddress, port)), SOCKET_TIMEOUT); // Error here 
             } 
              catch (IOException e){ 

               e.printStackTrace(); 
              } 

Могу ли я использовать MAC-адрес или другое решение?

+0

MAC-адрес устройства? – greenapps

ответ

1

Сокетная связь требует InetAddress вместо deviceAddress string.

socket.connect((new InetSocketAddress(address, port)), SOCKET_TIMEOUT); 

Вы можете получить groupOwnerAddress (вы можете получить только этот IP-адрес из WIFIP2P), после подключения.

mManager.requestConnectionInfo(mChannel, new WifiP2pManager.ConnectionInfoListener() { 
    @Override 
    public void onConnectionInfoAvailable(WifiP2pInfo wifiP2pInfo) { 
     InetAddress address = wifiP2pInfo.groupOwnerAddress; 
     //socket communication 
    } 
}); 

Все устройства могут получить этот адрес. Отправьте сообщение на этот адрес, а groupOwner может получить ваш IP-адрес из сокета.

 Смежные вопросы

  • Нет связанных вопросов^_^