咨询:Socket不能多次接收数据
最近用socket写了一个异步接收服务器端程序,修改于MSDN上的示例程序。客户端的Socket要求处于常开状态,给服务器发消息时第一次正常接收,但第二次则收不到了,如果将客户端Socket断开再重新连接,即可发送成功,但也是只能发一次。请问在客户端和服务器端Socket不断开的状态下,怎样连续接收数据,谢谢。
问题解决100分送上。。。
[解决办法]
本身就不需要断开就可以连续发送、接收数据啊..
楼主方便的话把代码贴上来
[解决办法]
Socket.Shutdown(SocketShutdown.Both)
Socket.Close()
检查是否有上述两行中的任一一行.
有就删除
在过程AcceptCallback(ByVal ar As IAsyncResult)中
循环执行Socket.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, New AsyncCallback(AddressOf ReadCallback), state)
注意要使用ManualResetEvent变量,
这样修改后需要增加关闭连接代码.
[解决办法]
应该是:看什么连接吧,是TCP还是UDP吧
[解决办法]
你使用异步的话,那是不是你的服务器的socket收到数据后,没有再次异步接受的呢.
看一下代码.
[解决办法]
写错了
应该是
AcceptCallback过程中调用BeginReceive
但是BeginReceive中调用ReadCallback,完成一次接收.
但是ReadCallback中没有再次调用BeginReceive.致使以后接收失败.
处理办法
1.循环调用BeginReceive
2.在AcceptCallBack中再次调用BeginReceive
[解决办法]
在过程AcceptCallback(ByVal ar As IAsyncResult)中
循环执行Socket.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, New AsyncCallback(AddressOf ReadCallback), state)
注意要使用ManualResetEvent变量,