理财网站模板南浔网站建设
2026/2/6 10:12:28 网站建设 项目流程
理财网站模板,南浔网站建设,中煤地建设有限公司网站,怎么注册建设银行网站socket通信聊天程序#xff0c;计算机通信成品源码#xff0c;聊天程序demo,C#编写#xff0c;含服务器和客户端#xff0c;使用socket通信#xff0c;多线程#xff0c;服务器可以支持多连接#xff0c;多客户端登录#xff0c;登录的客户端可以给在线的其它账号发送信…socket通信聊天程序计算机通信成品源码聊天程序demo,C#编写含服务器和客户端使用socket通信多线程服务器可以支持多连接多客户端登录登录的客户端可以给在线的其它账号发送信息数据可一对一或一对多客户端有断线重连功能。 项目使用VS2017导入项目共一千多行代码可直接运行。在计算机通信的世界里Socket 是一种强大的工具今天就来跟大家分享一个用 C# 编写的 Socket 通信聊天程序。这个程序不仅有完整的服务器和客户端代码还支持多线程、多连接等实用功能。整体架构概述这个聊天程序分为服务器端和客户端两大部分。服务器端要支持多个客户端同时登录连接并且能处理不同客户端之间一对一或一对多的消息发送。客户端则具备断线重连的贴心功能确保通信的稳定性。服务器端实现关键代码片段using System; using System.Collections.Generic; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; class Server { private TcpListener listener; private ListTcpClient clients new ListTcpClient(); private Thread listenThread; public Server(int port) { listener new TcpListener(IPAddress.Any, port); listenThread new Thread(ListenForClients); listenThread.Start(); } private void ListenForClients() { listener.Start(); while (true) { TcpClient client listener.AcceptTcpClient(); lock (clients) { clients.Add(client); } Thread clientThread new Thread(HandleClientComm); clientThread.Start(client); } } private void HandleClientComm(object clientObject) { TcpClient client (TcpClient)clientObject; NetworkStream stream client.GetStream(); byte[] buffer new byte[1024]; int bytesRead; while ((bytesRead stream.Read(buffer, 0, buffer.Length))! 0) { string message Encoding.UTF8.GetString(buffer, 0, bytesRead); Console.WriteLine($Received: {message}); // 处理接收到的消息这里可以做消息分发等逻辑 // 例如判断消息格式根据格式决定是一对一还是一对多发送 lock (clients) { foreach (TcpClient c in clients) { if (c! client) { NetworkStream clientStream c.GetStream(); clientStream.Write(buffer, 0, bytesRead); } } } } stream.Close(); client.Close(); lock (clients) { clients.Remove(client); } } }代码分析初始化部分Server类的构造函数中初始化了TcpListener并开启一个线程listenThread用于监听客户端连接。TcpListener绑定到本地任意 IP 地址和指定端口。监听客户端连接ListenForClients方法中listener.Start()开始监听然后通过listener.AcceptTcpClient()等待客户端连接。一旦有客户端连接将其加入clients列表并开启一个新线程HandleClientComm专门处理该客户端的通信。处理客户端通信HandleClientComm方法中从客户端连接获取NetworkStream用于读写数据。通过stream.Read读取客户端发送的数据然后简单地将数据广播给其他所有客户端实际应用中可以根据消息格式实现一对一或一对多发送逻辑。最后当客户端断开连接时关闭流和客户端连接并从clients列表中移除。客户端实现关键代码片段using System; using System.Net.Sockets; using System.Text; using System.Threading; class Client { private TcpClient client; private NetworkStream stream; private Thread receiveThread; private string serverIp; private int serverPort; public Client(string ip, int port) { serverIp ip; serverPort port; Connect(); } private void Connect() { while (true) { try { client new TcpClient(serverIp, serverPort); stream client.GetStream(); receiveThread new Thread(ReceiveMessages); receiveThread.Start(); break; } catch (Exception ex) { Console.WriteLine($Connection failed: {ex.Message}. Retrying in 5 seconds...); Thread.Sleep(5000); } } } private void ReceiveMessages() { byte[] buffer new byte[1024]; int bytesRead; while ((bytesRead stream.Read(buffer, 0, buffer.Length))! 0) { string message Encoding.UTF8.GetString(buffer, 0, bytesRead); Console.WriteLine($Received: {message}); } stream.Close(); client.Close(); Connect(); } public void SendMessage(string message) { if (client.Connected) { byte[] buffer Encoding.UTF8.GetBytes(message); stream.Write(buffer, 0, buffer.Length); } else { Console.WriteLine(Not connected. Cannot send message.); } } }代码分析初始化与连接Client类构造函数接收服务器 IP 和端口然后调用Connect方法尝试连接服务器。在Connect方法中使用try - catch块处理连接失败的情况如果连接失败会提示错误信息并在 5 秒后重试直到连接成功。连接成功后开启一个线程receiveThread用于接收服务器发送的消息。接收消息ReceiveMessages方法从NetworkStream中读取数据将其转换为字符串并输出到控制台。当读取到流结束即服务器关闭连接时关闭流和客户端连接并重新调用Connect方法尝试重连。发送消息SendMessage方法首先检查客户端是否已连接若已连接则将消息转换为字节数组并通过NetworkStream发送给服务器否则提示未连接不能发送消息。项目使用说明这个项目使用 VS2017 导入即可总共一千多行代码导入后可直接运行。无论是想深入学习 Socket 通信原理还是想在其基础上开发更复杂的聊天应用这个项目都是一个不错的起点。socket通信聊天程序计算机通信成品源码聊天程序demo,C#编写含服务器和客户端使用socket通信多线程服务器可以支持多连接多客户端登录登录的客户端可以给在线的其它账号发送信息数据可一对一或一对多客户端有断线重连功能。 项目使用VS2017导入项目共一千多行代码可直接运行。希望通过这篇博文能让大家对基于 C# 的 Socket 通信聊天程序有更清晰的认识和理解大家可以根据实际需求对代码进行扩展和优化。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询