异步socket时send数据包后EndReceive

dasihg dasihg 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
private void SendCallback(IAsyncResult ar)
{ // 从state对象中获取socket
Socket client = (Socket)ar.AsyncState; // 完成数据发送.
int bytesSent = client.EndSend(ar);
}

private static void ReceiveCallback(IAsyncResult ar)
{ // 从输入参数异步state对象中获取state和socket对象

StateObject state = (StateObject)ar.AsyncState;
Socket client = state.workSocket; //从远程设备读取消息头
int bytesRead = client.EndReceive(ar);

if (bytesRead > 0)
{ // 有数据,存储.

string headstr = Encoding.Default.GetString(state.buffer, 0, bytesRead);

state.sb.Append(headstr); // 继续读取.

client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReceiveCallback), state);
}
else
{ // 所有数据读取完毕.
if (state.sb.Length > 1) { response = state.sb.ToString(); } // 所有数据读取完毕的指示信号.
receiveDone.Set();
}

}
...全文
评论 22
收藏 已收藏
分享
返回顶部
dasihg
C# 111,129 成员 642,538 内容