异步socket时send数据包后EndReceive
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();
}
}
{ // 从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();
}
}
...全文
相关推荐
TCP-UDP-Socket.zip_socket udp c#_tcp/udp socket_udp编程
Windows下基于TCP和UDP的Socket编程,分别有服务端和客户端,好用。
socket同步,异步示例编程
socket同步,异步示例编程 socket同步,异步示例编程 socket同步,异步示例编程
简单的Socket实例 C# TCP
简单的Socket的聊天程序实例 用C#完成 模拟IPMSG 不过我也是新手 只实现了聊天功能 TCP协议
C# socket 通信 (客户端与服务端)
本程序在VS2005中测试通过。内有使用说明。可发送接受中文。
C#单客户机异步
C#单客户机异步 TCP/ip通讯技术编程,适用于通讯协议初学者


