TCPClient、TCPListener、UDPClient是对socket的封装和简化。
见名知意
TCPListener:服务端监听。
TCPClient:客户端
服务端参考代码:
//第一步: TcpListener对socket进行了一层封装,这个类里面自己会去创建socket对象。
TcpListener listener = new TcpListener(IPAddress.Parse("127.0.0.1"), 10086);
// 第二步:开始进行监听。
listener.Start();
// 第三步:等待客户端连接过来。
TcpClient client = listener.AcceptTcpClient();
// 第四步:接收客户端发送来的数据。
NetworkStream stream = client.GetStream();
// 得到了一个网络流,这个网络流可以取得客户端发送过来的数据。
// 第五步:解析数据。
// 创建一个数据的容器,用来承载数据。
byte[] data = new byte[1024];
while (true)
{
int length = stream.Read(data, 0, 1024);
// 0表示从数据的哪个索引开始存放数据。1024表示最大读取的字节数。
string message = Encoding.UTF8.GetString(data, 0, length);
Console.WriteLine("服务器接受到消息:" + message);
}
// 第六步:释放资源:
// 关闭流、关闭client、关闭listener。
stream.Close();
client.Close();
listener.Stop(); // 停止监听。
Console.ReadKey();
客户端参考代码:
// 第一步:当我们创建TcpClient对象的时候,就会跟server去建立连接。
TcpClient tcpClient = new TcpClient("127.0.0.1", 10086);
// 第二步:通过网络流进行数据交换。
NetworkStream stream = tcpClient.GetStream();
while (true)
{
// 第三步:Read用来读取数据,write用来写入数据,其实就是发送数据。
string message = Console.ReadLine();
byte[] data = Encoding.UTF8.GetBytes(message);
stream.Write(data, 0, data.Length);
}
//stream.Close();
//tcpClient.Close();
Console.ReadKey();
UDP协议只有一个UdpClient类。
有两种方法来建立默认远程主机:
1、使用远程主机名和端口号作为参数创建UdpClient类的实例。
2、创建UdpClient类的实例,然后调用Connect方法。
// 第一步:创建udpClient绑定ip和端口号。
UdpClient udpClient = new UdpClient();
while (true)
{
// 发送数据。
string message = Console.ReadLine();
byte[] data = Encoding.UTF8.GetBytes(message);
udpClient.Send(data, data.Length, new IPEndPoint(IPAddress.Parse("127.0.0.1"), 10086));
}
udpClient.Close();
Console.ReadKey();
// 第一步:创建udpClient绑定ip和端口号。
UdpClient udpClient = new UdpClient();
while (true)
{
// 发送数据。
string message = Console.ReadLine();
byte[] data = Encoding.UTF8.GetBytes(message);
udpClient.Send(data, data.Length, new IPEndPoint(IPAddress.Parse("127.0.0.1"), 10086));
}
udpClient.Close();
Console.ReadKey();
UdpClient方法还允许发送和接收多路广播数据报。使用JoinMulticastGroup方法将UdpClient预定给多路广播组。使用DropMulticastGroup方法可以从多路广播中取消对UdpClient的预定。