C#中通过TcpListener和TcpClient实现TCP通信,服务端监听连接并处理客户端请求,客户端发起连接并收发数据,使用NetworkStream进行读写,需注意消息边界、立即刷新流及异常处理,建议生产环境采用异步方式提升性能。

C# 中实现 TCP 通信主要依赖于 TcpClient 和 TcpListener 类,它们位于 System.Net.Sockets 命名空间下,封装了底层 Socket 操作,使 TCP 编程更简单直观。下面介绍如何使用这两个类完成基本的客户端与服务端通信。
1. TCP 服务端:使用 TcpListener 监听连接
TcpListener 用于在指定 IP 地址和端口上监听传入的 TCP 连接请求。当客户端连接时,它接受连接并返回一个 TcpClient 实例用于数据交换。
示例代码(服务端):
using System;using System.IO;using System.Net;using System.Net.Sockets;class TcpServer{static void Main(){// 监听本机 8080 端口TcpListener listener = new TcpListener(IPAddress.Any, 8080);listener.Start();Console.WriteLine("服务端已启动,等待客户端连接...");
while (true) { // 接受客户端连接(阻塞方法) TcpClient client = listener.AcceptTcpClient(); Console.WriteLine("客户端已连接。"); // 获取网络流进行读写 NetworkStream stream = client.GetStream(); StreamReader reader = new StreamReader(stream); StreamWriter writer = new StreamWriter(stream) { AutoFlush = true }; // 读取客户端消息 string message = reader.ReadLine(); Console.WriteLine("收到:" + message); // 回复客户端 writer.WriteLine("服务端收到消息:" + message); // 关闭资源 reader.Close(); writer.Close(); client.Close(); }}
}
2. TCP 客户端:使用 TcpClient 发起连接
TcpClient 用于连接远程 TCP 服务端。连接成功后,通过其 GetStream() 方法获取 NetworkStream 进行数据传输。
示例代码(客户端):
using System;using System.IO;using System.Net.Sockets;class TcpClientApp{static void Main(){try{// 连接本地 8080 端口的服务端TcpClient client = new TcpClient("127.0.0.1", 8080);Console.WriteLine("已连接到服务端。");
NetworkStream stream = client.GetStream(); StreamWriter writer = new StreamWriter(stream) { AutoFlush = true }; StreamReader reader = new StreamReader(stream); // 发送消息 writer.WriteLine("你好,服务端!"); // 接收回复 string response = reader.ReadLine(); Console.WriteLine("服务端回复:" + response); // 关闭连接 reader.Close(); writer.Close(); client.Close(); } catch (Exception ex) { Console.WriteLine("连接失败:" + ex.Message); }}
}
3. 数据传输说明与注意事项
TCP 是面向连接的流式协议,不保证消息边界。因此在实际应用中需要注意以下几点:
使用换行符或固定长度协议分隔消息,示例中用 ReadLine() 要求发送方以换行结束设置 AutoFlush = true 确保数据立即发送合理处理异常,如连接失败、网络中断等长时间运行的服务端应为每个客户端创建独立线程或使用异步方法避免阻塞监听
4. 异步通信建议(可选扩展)
上述示例为同步模式,适用于简单场景。生产环境推荐使用异步方式提升性能和响应能力。
可以使用 TcpListener.BeginAcceptTcpClient 或 C# 的 async/await 模式(如 TcpListener.AcceptTcpClientAsync)实现非阻塞操作。
基本上就这些。通过 TcpClient 和 TcpListener,C# 可以快速实现稳定的 TCP 通信,适合开发小型服务器、调试工具或局域网应用。关键是正确管理连接和流,确保数据完整收发。
以上就是C#如何进行TCP通信 C# TcpClient和TcpListener实现TCP Socket编程的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1441676.html
微信扫一扫
支付宝扫一扫