在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
服务器端 TCPServer 1、使用的通讯通道:socket 2、用到的基本功能: Bind, Listen, BeginAccept EndAccept BeginReceive EndReceive 3、函数参数说明
Socket listener = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp); 新建socket所使用的参数均为系统预定义的量,直接选取使用。 listener.Bind(localEndPoint);
localEndPoint 表示一个定义完整的终端,包括IP和端口信息。 //new IPEndPoint(IPAddress,port) //IPAdress.Parse("192.168.1.3")
listener.Listen(100);
监听
listener.BeginAccept(
new AsyncCallback(AcceptCallback), listener); AsyncCallback(AcceptCallback),一旦连接上后的回调函数为AcceptCallback。当系统调用这个函数时,自动赋予的输入参数为IAsyncResoult类型变量ar。
Socket handler = listener.EndAccept(ar);
完成连接,返回此时的socket通道。
handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,
new AsyncCallback(ReadCallback), state); 接收的字节,0,字节长度,0,接收时调用的回调函数,接收行为的容器。 ======== 容器的结构类型为:
StringBuilder();
} 容器至少为一个socket类型。 ===============
// Read data from the client socket.
int bytesRead = handler.EndReceive(ar); 完成一次连接。数据存储在state.buffer里,bytesRead为读取的长度。
handler.BeginSend(byteData, 0, byteData.Length, 0,
new AsyncCallback(SendCallback), handler); 发送数据byteData,回调函数SendCallback。容器handler
int bytesSent = handler.EndSend(ar);
发送完毕,bytesSent发送字节数。 4 程序结构 主程序:
);
Console.Read(); 连接行为回调函数AcceptCallback:
AsyncCallback(ReadCallback), state);
} 读取行为的回调函数ReadCallback:
AsyncCallback(ReadCallback), state);
} } } 发送消息给客户端:
, bytesSent);
handler.Shutdown(SocketShutdown.Both); handler.Close(); }
在各种行为的回调函数中,所对应的socket都从输入参数的AsyncState属性获得。使用(Socket)或者(StateObject)进行强制转换。BeginReceive函数使用的容器为state,因为它需要存放传送的数据。 而其余接收或发送函数的容器为socket也可。 完整代码
}
服务器端 TCPServer 1、使用的通讯通道:socket 2、用到的基本功能: Bind, Listen, BeginAccept EndAccept BeginReceive EndReceive 3、函数参数说明
Socket listener = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp); 新建socket所使用的参数均为系统预定义的量,直接选取使用。 listener.Bind(localEndPoint);
localEndPoint 表示一个定义完整的终端,包括IP和端口信息。 //new IPEndPoint(IPAddress,port) //IPAdress.Parse("192.168.1.3")
listener.Listen(100);
监听
listener.BeginAccept(
new AsyncCallback(AcceptCallback), listener); AsyncCallback(AcceptCallback),一旦连接上后的回调函数为AcceptCallback。当系统调用这个函数时,自动赋予的输入参数为IAsyncResoult类型变量ar。
Socket handler = listener.EndAccept(ar);
完成连接,返回此时的socket通道。
handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,
new AsyncCallback(ReadCallback), state); 接收的字节,0,字节长度,0,接收时调用的回调函数,接收行为的容器。 ======== 容器的结构类型为:
StringBuilder();
} 容器至少为一个socket类型。 ===============
// Read data from the client socket.
int bytesRead = handler.EndReceive(ar); 完成一次连接。数据存储在state.buffer里,bytesRead为读取的长度。
handler.BeginSend(byteData, 0, byteData.Length, 0,
new AsyncCallback(SendCallback), handler); 发送数据byteData,回调函数SendCallback。容器handler
int bytesSent = handler.EndSend(ar);
发送完毕,bytesSent发送字节数。 4 程序结构 主程序:
);
Console.Read(); 连接行为回调函数AcceptCallback:
AsyncCallback(ReadCallback), state);
} 读取行为的回调函数ReadCallback:
AsyncCallback(ReadCallback), state);
} } } 发送消息给客户端:
, bytesSent);
handler.Shutdown(SocketShutdown.Both); handler.Close(); }
在各种行为的回调函数中,所对应的socket都从输入参数的AsyncState属性获得。使用(Socket)或者(StateObject)进行强制转换。BeginReceive函数使用的容器为state,因为它需要存放传送的数据。 而其余接收或发送函数的容器为socket也可。 完整代码
}
主程序:
;
} 连接部分Callback:
connectDone.Set();
} 数据接收:
receiveDone.Set();
} }
发送数据:
sendDone.Set();
} |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论