如何清空缓冲区?
异步套接字,在服务器端异步接收数据,结果它只能接受第一次发过来的数据,而且不断读取。代码如下:
- C# code
Socket serverSocket = (Socket)ar.AsyncState; Socket clientSocket = serverSocket.EndAccept(ar); state = new StateObject(); state.workSocket = clientSocket; Send("connected"); this.serverSocket.BeginAccept(new AsyncCallback(AcceptCallback), this.serverSocket); clientSocket.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback), state);
希望收到第一个数据后就不准再收这个数据了,同时等待服务器端给他发送的第二条信息,该怎么改?
[解决办法]
你用异步的话,要实现这个功能很麻烦,最好修改协议,回避这个问题,
[解决办法]
什么乱其八糟的?
你的 serverSocket.BeginAccept 只是 Accept,根本不是“接受发过来的数据”功能。你的 ReadCallback 才是这个功能,可是代码呢?
你根本没有看懂自己的代码。
[解决办法]
套接字弄错了。
[解决办法]
不用清空缓冲区,只要你们之间发送接收的协议定好,每次都是把上一次的覆盖掉