CSharp中Socket网络编程(七)拓展类或引申类TCPClient、TCPListener、UDPClient

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的预定。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值