C#基于scoket简易聊天室代码阅读笔记

C#基于scoket简易聊天室代码阅读笔记

代码自https://blog.csdn.net/scimence/article/details/52957829(非常感谢博主,代码清晰完整又简洁)

  1. IPAddress.Parse()将 IP 地址字符串转换为 IPAddress 实例。
  2. EndPoint(端点):由IP地址和端口号构成,端口对应进程。这两个组合起来可以唯一的标识网络中某台主机上的某一个进程。这样就有一个唯一的身份标识,后面可以进行通信了
  3. Socket.Accept ():Accept 以同步方式从侦听套接字的连接请求队列中提取第一个挂起的连接请求,然后创建并返回一个新 Socket,可以调用 RemoteEndPoint 方法所返回的 Socket 来标识远程主机的网络地址和端口号
  4. 存储连接到服务器的客户端信息:Dictionary<string, Socket> clients = new Dictionary<string, Socket>(); 
  5. C#中Dictionary的用法及用途https://www.cnblogs.com/fire909090/p/8207239.html
  6. 确定是否 Dictionary<TKey, TValue> 包含指定键:ContainsKey();
  7. Socket.Send():将数据发送到连接 Socket;
  8. 获取已经从网络接收且可供读取的数据量:Socket.Available属性
  9. C#socket通信https://www.cnblogs.com/sdyinfang/p/5519708.html
  10. C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针。委托(Delegate) 是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。

过程

在服务端:

(1)声明一个套接字(称为监听套接字)Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

(2)声明一个端点(EndPoint)上面提到过Socket需要跟它绑定才能通信。IPEndPoint endPoint = new IPEndPoint(IPAddress.Loopback, 8080);

(3)设置监听队列serverSocket.Listen(100);

(4)通过Accept()方法来获取一个通信套接字(当有客户端连接时),这个方法会阻塞线程,避免界面卡死的现象,启动一个线程,把这个Accept()放在线程函数里面。

在客户端:

(1)声明一个套接字,通过connect()向服务器发起连接。

(2)通过Receive方法获取服务器发来的消息(这里同样启用一个线程,通过while循环来实时监听服务器端发送的消息)

注意:数据是以字节流(Byte[])的形式传递的,我会使用Encoding.UTF8.GetString()方法来获取为字符串。都是通过Send()来向彼此发送消息。

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现C#简易聊天室,可以使用Socket来进行操作。首先,声明一个套接字(Socket)作为监听套接字,使用AddressFamily.InterNetwork、SocketType.Stream和ProtocolType.Tcp来创建这个套接字。接下来,需要设置服务器的IP地址和端口号。然后,使用Socket的Bind方法将套接字绑定到指定的IP地址和端口上。接着,使用Socket的Listen方法开始监听连接请求。当有客户端连接请求时,可以使用Accept方法接受连接,并创建一个新的套接字来处理该连接。这样就可以与客户端进行通信了。 在聊天室中,可以使用多线程来处理多个客户端的连接。当有新的客户端连接时,创建一个新的线程来处理该连接,这样就可以同时处理多个客户端的消息收发。 在处理客户端消息的过程中,可以使用Socket的Receive和Send方法来接收和发送数据。可以使用StreamReader和StreamWriter类来简化数据的读取和写入操作。 通过这些步骤,就可以实现一个简单的C# Socket聊天室。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [C#基于Socket的简单聊天室实践](https://blog.csdn.net/wyqlxy/article/details/46923611)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值