Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.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# 为什么可以';我不能再发送到监听插座了吗?_C#_Exception_Sockets_Tcp_Asynchronous - Fatal编程技术网

C# 为什么可以';我不能再发送到监听插座了吗?

C# 为什么可以';我不能再发送到监听插座了吗?,c#,exception,sockets,tcp,asynchronous,C#,Exception,Sockets,Tcp,Asynchronous,我正在用C#为一个在线游戏编写一个简单的代理(更像是一个数据包记录器)。 基本登录过程如下所示: 客户端->服务器:登录数据包-我的代理接收数据包,显示数据包并将其发送到服务器 服务器->客户端:已连接!数据包-我的代理再次接收数据包,它也会再次显示数据包,但当试图将其发送到客户端时,它会显示: “不允许发送或接收数据的请求,因为套接字未连接,并且(使用sendto调用在数据报套接字上发送时)未提供地址。” 我的代码: 你不应该试图发送这个监听插座。您需要在使用EndAccept()创建的套接字

我正在用C#为一个在线游戏编写一个简单的代理(更像是一个数据包记录器)。 基本登录过程如下所示:

客户端->服务器:登录数据包-我的代理接收数据包,显示数据包并将其发送到服务器

服务器->客户端:已连接!数据包-我的代理再次接收数据包,它也会再次显示数据包,但当试图将其发送到客户端时,它会显示:

“不允许发送或接收数据的请求,因为套接字未连接,并且(使用sendto调用在数据报套接字上发送时)未提供地址。”

我的代码:


你不应该试图发送这个监听插座。您需要在使用EndAccept()创建的套接字上发送。(winSock2在您的代码中-但您需要以不同的方式确定其作用域。)

侦听TCP套接字只有一个功能-接受客户端连接。连接将占用一个新的套接字描述符,即为每个新的客户端连接创建一个新的套接字(在C中,这就是
accept(2)
system call返回的内容)


您不能
send(2)
recv(2)
监听套接字上的数据。

谢谢您的解释,我现在更明白了。我不会选择这个作为答案,因为它不能直接解决我的问题。
171: listenSocket.Send(RecvBuffer2);