C#Socket多线程聊天室
作者:野牛程序员:2023-11-23 09:26:37C#阅读 2830
使用C#创建一个基本的Socket多线程聊天室可以通过以下步骤实现。请注意,这只是一个简单的示例,实际中可能需要更多的功能和错误处理。
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
class Program
{
static TcpListener server;
static readonly object lockObject = new object();
static void Main()
{
Console.WriteLine("服务器已启动,等待连接...");
server = new TcpListener(IPAddress.Any, 8888);
server.Start();
while (true)
{
TcpClient client = server.AcceptTcpClient();
Thread clientThread = new Thread(HandleClient);
clientThread.Start(client);
}
}
static void HandleClient(object obj)
{
TcpClient tcpClient = (TcpClient)obj;
NetworkStream clientStream = tcpClient.GetStream();
byte[] message = new byte[4096];
int bytesRead;
while (true)
{
bytesRead = 0;
try
{
bytesRead = clientStream.Read(message, 0, 4096);
}
catch
{
break;
}
if (bytesRead == 0)
break;
string clientMessage = Encoding.UTF8.GetString(message, 0, bytesRead);
Console.WriteLine("客户端: " + clientMessage);
BroadcastMessage(clientMessage);
}
tcpClient.Close();
}
static void BroadcastMessage(string message)
{
byte[] broadcastBytes = Encoding.UTF8.GetBytes(message);
lock (lockObject)
{
foreach (TcpClient client in clients)
{
NetworkStream clientStream = client.GetStream();
clientStream.Write(broadcastBytes, 0, broadcastBytes.Length);
clientStream.Flush();
}
}
}
}请注意,这只是一个简单的例子。在实际应用中,可能需要更多的功能,例如用户身份验证、安全性、异常处理等。此外,这个例子中的线程同步可能需要改进,以确保多个线程之间的安全访问。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

