C# 使用TcpListener 和 TcpClient实现Tcp通讯

本文详细介绍了C#中TcpListener和TcpClient的使用,讨论了它们在处理网络流时可能出现的粘包问题,并展示了服务端如何通过心跳间隔维持连接。客户端发送消息后,服务器能正确接收并打印出来。

目录

写在前面

代码实现

服务端代码

客户端代码

执行结果


写在前面

TcpListener 和 TcpClient 是在 System.Net.Sockets.Socket 类的基础上做的进一步封装,使用 GetStream 方法返回网络流,由于是以流的方式读取数据,所以在使用过程中更容易有粘包和分包的问题,还不如直接使用Socket类来的方便。

代码实现

服务端代码

    static void TcpListenerTest()
    {
        Console.WriteLine("TcpListener Server");
        var tcpListener = new TcpListener(IPAddress.Parse("127.0.0.1"), 9090);
        tcpListener.Start();
        Console.WriteLine("TcpListener Start");
        var task = Task.Run(() =>
        {
            while (true)
            {
                var tcpClient = tcpListener.AcceptTcpClient();
                var buffer = new byte[tcpClient.ReceiveBufferSize];
                var stream = tcpClient.GetStream();
                stream.Read(buffer, 0, buffer.Length);
                stream.Close();
                tcpClient.Close();
                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值