打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C# TCP通讯示例

示例目的:使用控制台项目模板分别新建一个服务器和一个客户端,实现两两通讯

1. 新建服务器项目

using System;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading;
namespace server{ class Program { static TcpClient tcpClient; static NetworkStream stream; static void Main(string[] args) { try { var serverIPEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 13000); // 当前服务器使用的ip和端口 TcpListener tcpListener = new TcpListener(serverIPEndPoint); tcpListener.Start(); Console.WriteLine("服务端已启用......"); // 阻塞线程的执行,直到一个客户端连接 tcpClient = tcpListener.AcceptTcpClient(); Console.WriteLine("已连接."); stream = tcpClient.GetStream(); // 创建用于发送和接受数据的NetworkStream
#region 开启线程保持通讯 var t1 = new Thread(ReceiveMsg); t1.Start(); var t2 = new Thread(SendMsg); t2.Start(); #endregion } catch (Exception ex) { Console.WriteLine(ex.Message); Console.ReadKey(); }
}
/// <summary> /// 发送消息 /// </summary> static void SendMsg() { string message = string.Empty; byte[] messageBytes; try { while (true) { message = Console.ReadLine().ToString(); // 获取控制台字符串 messageBytes = Encoding.UTF8.GetBytes(message); // 将消息编码成字符串数组 stream.Write(messageBytes, 0, messageBytes.Length); } } catch (Exception ex) { Console.WriteLine(ex.Message); Console.ReadKey(); }
}
/// <summary> /// 接收消息 /// </summary> static void ReceiveMsg() { byte[] buffer = new byte[1024]; // 预设最大接受1024个字节长度,可修改 int count = 0; try { while ((count = stream.Read(buffer, 0, buffer.Length)) != 0) { Console.WriteLine($"{tcpClient.Client.LocalEndPoint.ToString()}:{Encoding.UTF8.GetString(buffer, 0, count)}"); } } catch (Exception ex) { Console.WriteLine(ex.Message); Console.ReadKey(); }
} }}

2. 新建客户端项目

using System;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading;
namespace client{ class Program { static TcpClient tcpClient; static NetworkStream stream; static void Main(string[] args) { try { var clientIPEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 4196); // 当前客户端使用的ip和端口 tcpClient = new TcpClient(clientIPEndPoint); var serverIPEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 13000); // 当前服务器使用的ip和端口 tcpClient.Connect(serverIPEndPoint); // 连接服务器 var isConnected = tcpClient.Connected; Console.WriteLine("客户端已启用......"); stream = tcpClient.GetStream(); // 创建用于发送和接受数据的NetworkStream
#region 开启线程保持通讯 var t1 = new Thread(ReceiveMsg); t1.Start(); var t2 = new Thread(SendMsg); t2.Start(); #endregion } catch (Exception ex) { Console.WriteLine(ex.Message); Console.ReadKey(); } }
/// <summary> /// 接收消息 /// </summary> static void ReceiveMsg() { byte[] buffer = new byte[1024]; // 预设最大接受1024个字节长度,可修改 int count = 0; try { while ((count = stream.Read(buffer, 0, buffer.Length)) != 0) { Console.WriteLine($"{tcpClient.Client.LocalEndPoint.ToString()}:{Encoding.UTF8.GetString(buffer, 0, count)}"); } } catch (Exception ex) { Console.WriteLine(ex.Message); Console.ReadKey(); }
}
/// <summary> /// 发送消息 /// </summary> static void SendMsg() { string message = string.Empty; byte[] messageBytes; try { while (true) { message = Console.ReadLine().ToString(); // 获取控制台字符串 messageBytes = Encoding.UTF8.GetBytes(message); // 将消息编码成字符串数组 stream.Write(messageBytes, 0, messageBytes.Length); } } catch (Exception ex) { Console.WriteLine(ex.Message); Console.ReadKey(); }
} }}

3.先启动服务器,再启动客户端,查看效果

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
使用 AcceptTcpClientAsync 进行 异步 操作
C#中的socket编程入门实例
加密网络数据
给数组扩容的几种方式
细说C#多线程那些事:线程基础
【读书笔记】C#高级编程 第五章 泛型
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服