Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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
C# 如何逆转TcpListener/TcpClient的角色?_C#_Sockets_Tcpclient_Tcplistener_System.net.sockets - Fatal编程技术网

C# 如何逆转TcpListener/TcpClient的角色?

C# 如何逆转TcpListener/TcpClient的角色?,c#,sockets,tcpclient,tcplistener,system.net.sockets,C#,Sockets,Tcpclient,Tcplistener,System.net.sockets,我有一个不寻常的问题,我希望得到投入。我是网络编程新手,正在通过System.NET.Sockets命名空间中的.NET“TcpListener”和“TcpClient”类学习socket编程。不过,我需要以一种不同寻常的方式使用它们:我需要能够在计算机a和计算机B之间建立连接。计算机a将运行“TcpClient”类的实例,并将尝试打开到计算机B的连接,该计算机B正在运行“TcpListener”实例。这一部分似乎直截了当。但是,一旦建立了连接,我需要反转角色,以便计算机A成为等待并响应计算机B

我有一个不寻常的问题,我希望得到投入。我是网络编程新手,正在通过System.NET.Sockets命名空间中的.NET“TcpListener”和“TcpClient”类学习socket编程。不过,我需要以一种不同寻常的方式使用它们:我需要能够在计算机a和计算机B之间建立连接。计算机a将运行“TcpClient”类的实例,并将尝试打开到计算机B的连接,该计算机B正在运行“TcpListener”实例。这一部分似乎直截了当。但是,一旦建立了连接,我需要反转角色,以便计算机A成为等待并响应计算机B发送的消息的机器。换句话说,计算机A成为服务器,计算机B成为客户端。此角色转换必须使用与计算机A最初作为客户端时打开的连接相同的连接。我不清楚如何做到这一点,因为我正在阅读的所有示例和(优秀的)书籍《C#中的TCP/IP套接字》总是在预定义的角色中使用这些类。真的有办法做到这一点吗?我是否必须使用“Socket”类而不是更抽象的“TcpListener/TcpClient”类?

处理消息的方式没有区别,只是建立连接的方式不同。一旦套接字打开,客户端或服务器都可以发送/接收消息。我认为您不需要反转角色。当您的客户收到消息时,他将发送响应并等待下一条消息。听者也会这样做,但他会等待响应并发送下一条消息。