Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets Raspberry pi 2服务器没有响应_Sockets_Networking_Raspberry Pi2_Windows 10 Iot Core - Fatal编程技术网

Sockets Raspberry pi 2服务器没有响应

Sockets Raspberry pi 2服务器没有响应,sockets,networking,raspberry-pi2,windows-10-iot-core,Sockets,Networking,Raspberry Pi2,Windows 10 Iot Core,我用运行Windows10IoT的raspberry pi 2启动了一个客户机-服务器项目,这非常好,因为您可以在PC和RPI2上运行相同的应用程序。考虑到这一点,我只创建了一个既可以充当客户端又可以充当服务器的应用程序,然后将其部署在两个设备上,并将其中一个用作服务器,另一个用作客户端。唯一的问题是服务器端从不应答客户机连接调用 我的代码如下: 服务器: ///servername is the port that I use ///hostadapter is an adapter help

我用运行Windows10IoT的raspberry pi 2启动了一个客户机-服务器项目,这非常好,因为您可以在PC和RPI2上运行相同的应用程序。考虑到这一点,我只创建了一个既可以充当客户端又可以充当服务器的应用程序,然后将其部署在两个设备上,并将其中一个用作服务器,另一个用作客户端。唯一的问题是服务器端从不应答客户机连接调用

我的代码如下:

服务器:

///servername is the port that I use
///hostadapter is an adapter helper obj that has a HostName property set to my Ip address.
public async void Start(string serverName, HostName hostAdapter)
    {
        //create the "server" object
        serverListener = new StreamSocketListener();
        serverListener.ConnectionReceived += ServerListener_ConnectionReceived;

        try
        {
            await serverListener.BindEndpointAsync(hostAdapter, serverName);
            Started = true;
        }
        catch (Exception ee)
        {
            Started = false;
            myConsole.Print("error while starting server: " + ee.Message);
        }
    }

private async void ServerListener_ConnectionReceived(StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs args)
    {

        myConsole.Print("connection recieved callback called");
        DataReader reader = new DataReader(args.Socket.InputStream);
        DataWriter ServerWriter = new DataWriter(args.Socket.OutputStream);
        string ServerAnswer = "message recieved by server";

        try
        {
            while (true)
            {
                // Read first 4 bytes (length of the subsequent string).
                uint sizeFieldCount = await reader.LoadAsync(sizeof(uint));
                if (sizeFieldCount != sizeof(uint))
                {
                    // The underlying socket was closed before we were able to read the whole data.
                    return;
                }

                // Read the string.
                uint stringLength = reader.ReadUInt32();
                uint actualStringLength = await reader.LoadAsync(stringLength);
                if (stringLength != actualStringLength)
                {
                    // The underlying socket was closed before we were able to read the whole data.
                    return;
                }

                ServerWriter.WriteUInt32(ServerWriter.MeasureString(ServerAnswer));
                ServerWriter.WriteString(ServerAnswer);
                await ServerWriter.StoreAsync();
            }
        }
        catch (Exception exception)
        {
            myConsole.Print(exception.Message);
        }
    }
客户:

public async void Connect(string serverIP, string serverPort)
    {

        try
        {
            ServerHost = new HostName(serverIP);
        }
        catch (Exception ee)
        {
            return;
        }

        try
        {
            //open socket
            ClientSocket = new StreamSocket();
            await ClientSocket.ConnectAsync(ServerHost, serverPort);
            Connected = true;
        }
        catch (Exception ex)
        {
            ClientSocket.Dispose();
            ClientSocket = null;

            myConsole.Print(ex.Message);

            Connected = false;
        }
    }

非常感谢您的帮助。我已经下载了wireshark,以便能够监视网络数据,并且找到了客户端发送的tcp[syn]包,但我看不到任何tcp[syn ack]包。

结果是我缺少了一项功能。通过以太网进行通信所需的功能包括

<Capabilities>
    <Capability Name="internetClient" />
    <Capability Name="privateNetworkClientServer" />
    <Capability Name="internetClientServer" />
</Capabilities>


我只添加了privateNetworkClientServer和internetClient..

您可以尝试
BindServiceNameAsync()
而不是
BindEndpointAsync
?我已经尝试了这两种方法。我真的不明白其中的区别。我使用BindEndpointAsync()运行,因为我在microsoft示例中看到了它。因此,如果我理解正确,服务器可以在PC上运行,但不能在raspberry上运行,或者服务器永远不能工作?如果客户机和服务器都在同一台PC上,服务器就可以工作。一旦它们在不同的机器上运行,它们就不能工作。i、 e PC客户端和服务器工作正常。PC客户端,rPI服务器不工作。PC服务器和rPI客户端不工作。是否启用了本地网络功能?