为什么我不能再发送到监听套接字了?

时间:2010-07-12 20:43:08

标签: c# exception sockets tcp asynchronous

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

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

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

“由于套接字未连接而且(使用sendto调用在数据报套接字上发送时)未提供发送或接收数据的请求,因此未提供地址。”

我的代码:http://lesderid.pastebin.com/NkEy7qQp

2 个答案:

答案 0 :(得分:1)

171: listenSocket.Send(RecvBuffer2);

您不应该尝试发送此侦听套接字。您需要发送使用EndAccept()创建的套接字。 (代码中的winSock2 - 但您需要以不同的方式对其进行范围调整。)

答案 1 :(得分:1)

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

您无法在侦听套接字上send(2)recv(2)数据。