簡體   English   中英

WIFI直接IP地址問題

[英]WIFI Direct IP Address issue

我已經檢查並發現問題是IP地址已分配給connectionEndpointPair帶有wi-fi直接網絡適配器的IP,我不知道如何在該特定IP上打開端口,該IP與當我從PC上ping它時,Windows正在偵聽端口5009,並在使用wi-fi ip時建立了連接,但是當我使用wi-fi直接ip地址時,我遇到了問題

設備和Windows 8.1應用程序之間的wi-fi直接連接是可以的,然后我正在等待套接字連接,但沒有發生,這可能是什么問題?

我在Visual Studio上收到錯誤消息:

無法建立連接,因為目標計算機主動拒絕了該連接。 (來自HRESULT的異常:0x8007274D)

在Windows端,我正在使用以下代碼:

String deviceSelector = WiFiDirectDevice.GetDeviceSelector();

        DeviceInformationCollection deviceCollection = await DeviceInformation.FindAllAsync(deviceSelector);

        if(deviceCollection.Count > 0)
        {
            try
            {
                wfdDevice = await WiFiDirectDevice.FromIdAsync(deviceCollection[0].Id);

                wfdDevice.ConnectionStatusChanged +=ConnectionStatusChangedNotficationHandler;



                var endpointPairs = wfdDevice.GetConnectionEndpointPairs();
                EndpointPair connectionEndpointPair = endpointPairs[0];

                try
                {
                    connectionEndpointPair.RemoteServiceName = "5009";


                    StreamSocket socket = new StreamSocket();
                    await socket.ConnectAsync(connectionEndpointPair);

                    string s = "hello";
                }catch (Exception err)
                {
                    string s = err.Message;
                    s = err.StackTrace;
                }
            }
            catch (Exception err)
            {
                string error = err.Message;

            }

在android方面,我正在使用以下代碼:

               private void initiateClientSocket(String hostAddress) {


        int timeout = 10000;
        int port = 5009;

        InetSocketAddress socketAddress 
          = new InetSocketAddress(hostAddress, port);

        try {
          Socket socket = new Socket();
          socket.bind(null);
          socket.connect(socketAddress, timeout);
        } catch (IOException e) {
          Log.e(TAG, "IO Exception.", e);
        }

        // TODO Start Receiving Messages
      }

從android方面,我得到:

java.net.UnknownHostException:主機未解析:我的ip

可以幫忙嗎

謝謝 :)

即使您在Android手機和Windows計算機之間建立了直接的WIFI連接,也需要服務器和客戶端來進行tcp連接。

我不知道您的應用程序的用途,但我認為Windows計算機是服務器的更好選擇。 因此,在計算機上,您應該打開該端口的偵聽器,而不是連接到套接字。

與所選StreamSocket類相關的服務器類是StreamSocketListener 您可以在此處找到文檔: http : //msdn.microsoft.com/zh-cn/library/windows/apps/windows.networking.sockets.streamsocketlistener.aspx

本文檔中還有一段關於典型的操作順序:

  • 創建StreamSocketListener。
  • 使用Control屬性檢索StreamSocketListenerControl對象並設置所需的套接字服務質量。
  • 將ConnectionReceived事件分配給事件處理程序。
  • 調用BindServiceNameAsync或BindEndpointAsync方法綁定到本地TCP端口或服務名稱。
  • 接收到連接后,使用StreamSocketListenerConnectionReceivedEventArgs對象檢索已創建的StreamSocket對象的Socket屬性。
  • 使用StreamSocket對象發送和接收數據。
  • 調用Close方法以停止偵聽和接受傳入的網絡連接,並釋放與StreamSocketListener對象關聯的所有非托管資源。 接收連接時創建的所有StreamSocket對象均不受影響,可以根據需要繼續使用。

我還沒有使用這個特殊的類,但是TCP的基礎知識總是一樣的...

我不太了解您在Window上的代碼,但是猜測以下代碼有問題

connectionEndpointPair.RemoteServiceName = "5009";

似乎“ RemoteServiceName”與端口號5009無關。請檢查結構/對象“ connectionEndpointPair”中的其他字段並進行正確的設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM