这篇文章主要介绍了C#使用Socket实现服务器与多个客户端通信(简单的聊天系统),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
扩展:
由于server端是存储了所有server与client的连接对象,因此我们是可以基于此demo的基础上实现聊天系统:
* 每当一个与用户发言时,是由server接收到的某个用户的发言信息的,此时服务器端可以通过循环发送该用户发送的信息给每个已经连接连接的用户(排除发送者)。
Server端代码:
class Program
{
//创建一个和客户端通信的套接字
static Socket SocketWatch = null;
//定义一个集合,存储客户端信息
static Dictionary<string, Socket> ClientConnectionItems = new Dictionary<string, Socket> { };
static void Main(string[] args)
{
//端口号(用来监听的)
int port = 6000;
//string host = "127.0.0.1";
//IPAddress ip = IPAddress.Parse(host);
IPAddress ip = IPAddress.Any;
//将IP地址和端口号绑定到网络节点point上
IPEndPoint ipe = new IPEndPoint(ip, port);
//定义一个套接字用于监听客户端发来的消息,包含三个参数(IP4寻址协议,流式连接,Tcp协议)
SocketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//监听绑定的网络节点
SocketWatch.Bind(ipe);
//将套接字的监听队列长度限制为20
SocketWatch.Listen(20);
//负责监听客户端的线程:创建一个监听线程
Thread threadwatch = new Thread(WatchConnecting);
//将窗体线程设置为与后台同步,随着主线程结束而结束
threadwatch.IsBackground = true;
//启动线程
threadwatch.Start();
Console.WriteLine("开启监听......");
Console.WriteLine("点击输入任意数据回车退出程序......");
Console.ReadKey();
SocketWatch.Close();
//Socket serverSocket = null;
//int i=1;
//while (true)
//{
// //receive message
// serverSocket = SocketWatch.Accept();
// Console.WriteLine("连接已经建立!");
// string recStr = "";
// byte[] recByte = new byte[4096];
// int bytes = serverSocket.Receive(recByte, recByte.Length, 0);
// //recStr += Encoding.ASCII.GetString(recByte, 0, bytes);
// recStr += Encoding.GetEncoding("utf-8").GetString(recByte, 0, bytes);
// //send message
// Console.WriteLine(recStr);
// Console.Write("请输入内容:");
// string sendStr = Console.ReadLine();
// //byte[] sendByte = Encoding.ASCII.GetBytes(sendStr);
// byte[] sendByte = Encoding.GetEncoding("utf-8").GetBytes(sendStr);
// //Thread.Sleep(4000);
// serverSocket.Send(sendByte, sendByte.Length, 0);
// serverSocket.Close();
// if (i >= 100)
// {
// break;
// }
// i++;
/
沃梦达教程
本文标题为:C#使用Socket实现服务器与多个客户端通信(简单的聊天系统)
基础教程推荐
猜你喜欢
- C# 调用WebService的方法 2023-03-09
- ZooKeeper的安装及部署教程 2023-01-22
- winform把Office转成PDF文件 2023-06-14
- C# List实现行转列的通用方案 2022-11-02
- C# windows语音识别与朗读实例 2023-04-27
- C#类和结构详解 2023-05-30
- 一个读写csv文件的C#类 2022-11-06
- unity实现动态排行榜 2023-04-27
- C#控制台实现飞行棋小游戏 2023-04-22
- linux – 如何在Debian Jessie中安装dotnet core sdk 2023-09-26