C# 为什么可以';我不能再发送到监听插座了吗?
我正在用C#为一个在线游戏编写一个简单的代理(更像是一个数据包记录器)。 基本登录过程如下所示: 客户端->服务器:登录数据包-我的代理接收数据包,显示数据包并将其发送到服务器 服务器->客户端:已连接!数据包-我的代理再次接收数据包,它也会再次显示数据包,但当试图将其发送到客户端时,它会显示: “不允许发送或接收数据的请求,因为套接字未连接,并且(使用sendto调用在数据报套接字上发送时)未提供地址。” 我的代码:C# 为什么可以';我不能再发送到监听插座了吗?,c#,exception,sockets,tcp,asynchronous,C#,Exception,Sockets,Tcp,Asynchronous,我正在用C#为一个在线游戏编写一个简单的代理(更像是一个数据包记录器)。 基本登录过程如下所示: 客户端->服务器:登录数据包-我的代理接收数据包,显示数据包并将其发送到服务器 服务器->客户端:已连接!数据包-我的代理再次接收数据包,它也会再次显示数据包,但当试图将其发送到客户端时,它会显示: “不允许发送或接收数据的请求,因为套接字未连接,并且(使用sendto调用在数据报套接字上发送时)未提供地址。” 我的代码: 你不应该试图发送这个监听插座。您需要在使用EndAccept()创建的套接字
你不应该试图发送这个监听插座。您需要在使用EndAccept()创建的套接字上发送。(winSock2在您的代码中-但您需要以不同的方式确定其作用域。)侦听TCP套接字只有一个功能-接受客户端连接。连接将占用一个新的套接字描述符,即为每个新的客户端连接创建一个新的套接字(在C中,这就是
accept(2)
system call返回的内容)
您不能
send(2)
或recv(2)
监听套接字上的数据。谢谢您的解释,我现在更明白了。我不会选择这个作为答案,因为它不能直接解决我的问题。
171: listenSocket.Send(RecvBuffer2);