C#简单聊天服务器程序

C# 简单聊天服务器程序

目录

[一、 介绍](#一、 介绍)

[二、 简单聊天服务器程序](#二、 简单聊天服务器程序)

[三、 简单聊天服务器程序](#三、 简单聊天服务器程序)

[四、 简单聊天服务器程序](#四、 简单聊天服务器程序)

[五、 简单聊天服务器程序](#五、 简单聊天服务器程序)

[六、 简单聊天服务器程序](#六、 简单聊天服务器程序)

[class Program](#class Program)

[static void Main(string\[\] args)](#static void Main(string[] args))

  • 介绍

它使用了多线程和网络编程技术。这个程序可以同时处理多个客户端连接,并在客户端之间转发消息。这个程序创建了一个`ChatServer`类,它可以监听指定端口上的客户端连接。当有新的客户端连接时,它会创建一个新的线程来处理该客户端的消息。`HandleClient`方法负责读取客户端发送的消息,并将其转发给其他客户端。

  • 简单聊天服务器程序

using System;

using System.Net;

using System.Net.Sockets;

using System.Text;

using System.Threading;

class ChatServer

{

private TcpListener _listener;

private bool _isRunning;

public ChatServer(int port)

{

_listener = new TcpListener(IPAddress.Any, port);

_isRunning = false;

}

  • 简单聊天服务器程序

public void Start()

{

_listener.Start();

_isRunning = true;

while (_isRunning)

{

TcpClient client = _listener.AcceptTcpClient();

Thread clientThread = new Thread(HandleClient);

clientThread.Start(client);

}

}

  • 简单聊天服务器程序

public void Stop()

{

_isRunning = false;

_listener.Stop();

}

private void HandleClient(object obj)

{

TcpClient client = (TcpClient)obj;

NetworkStream stream = client.GetStream();

try

{

while (true)

{

byte\[\] buffer = new byte1024;

int bytesRead = stream.Read(buffer, 0, buffer.Length);

if (bytesRead == 0)

{

break;

}

  • 简单聊天服务器程序

string message = Encoding.UTF8.GetString(buffer, 0, bytesRead);

Console.WriteLine("收到消息: " + message);

byte\[\] response = Encoding.UTF8.GetBytes("已收到: " + message);

stream.Write(response, 0, response.Length);

}

}

catch (Exception ex)

{

Console.WriteLine("客户端异常: " + ex.Message);

}

finally

{

client.Close();

}

}

}

  • 简单聊天服务器程序

class Program

{

static void Main(string\[\] args)

{

Console.WriteLine("启动聊天服务器...");

ChatServer server = new ChatServer(8888);

server.Start();

}

}

相关推荐
RisunJan2 分钟前
Linux命令-vgchange(修改 LVM 卷组属性)
linux·运维·服务器
ZMacros26 分钟前
Buildroot构建文件系统
linux·服务器
herinspace29 分钟前
管家婆财贸ERP如何进行基本信息批量搬移
服务器·数据库·管家婆软件·财务软件
学习星球35 分钟前
Astro 全栈实战:拆解 RealWorld 项目
前端·javascript·架构·系统架构·前端框架·c5全栈
软件开发JR1 小时前
基于Web的足球青训俱乐部管理后台系统的设计与开发
java·前端·spring boot·毕业设计
Turboex邮件分享1 小时前
MX记录与邮件路由:一封邮件如何找到正确的服务器
服务器·网络协议·安全
那年窗外下的雪.1 小时前
VXLAN EVPN 分层排障:从 VTEP 可达、ARP/MAC 到 MAC Mobility
服务器·前端·网络·数据库·spine
崇子嵘2 小时前
基于zynqMPsoc15eg的linux端axi dma教训总结
linux·运维·服务器
ZJU_统一阿萨姆2 小时前
【算子开发】全局内存访问与合并访存
java·服务器·网络·人工智能·语言模型
heimeiyingwang2 小时前
【架构实战】Kubernetes网络模型深度解析:从Pod通信到Ingress网关实战
开发语言·架构·php