读书人

怎么清空缓冲区

发布时间: 2012-05-20 16:03:12 作者: rapoo

如何清空缓冲区?
异步套接字,在服务器端异步接收数据,结果它只能接受第一次发过来的数据,而且不断读取。代码如下:

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 才是这个功能,可是代码呢?

你根本没有看懂自己的代码。
[解决办法]
套接字弄错了。
[解决办法]
不用清空缓冲区,只要你们之间发送接收的协议定好,每次都是把上一次的覆盖掉

读书人网 >C#

热点推荐