日期:2014-05-18  浏览次数:21112 次

如何清空缓冲区?
异步套接字,在服务器端异步接收数据,结果它只能接受第一次发过来的数据,而且不断读取。代码如下:
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 才是这个功能,可是代码呢?

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