![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
服务器
文章平均质量分 66
Laker404
把兴趣放在未来,因为你将在那里过完一生
Future404.top
展开
-
关于网站SSL证书的问题
网站授权SSL证书原创 2024-05-29 11:44:05 · 148 阅读 · 0 评论 -
OSI(Open Systems Interconnection)的七层网络模型
首先,数据从你的设备发送到你所连接的网络(比如家庭网络、企业网络等),然后通过本地路由器转发到你的互联网服务提供商(ISP)的网络。当检测到错误时,根据实现或网络的配置或协议,帧可能被丢弃,或者错误会被报告给上面的层,用于进一步错误校正。一旦确定了数据包的下一跳路由器,网络层将数据包封装在网络层协议的数据包中(如 IPv4 或 IPv6),并将其发送到下一跳路由器。OSI模型的第一层,负责在物理媒介上传输原始比特流,处理物理连接,电压、光信号和数据传输速率等,第一层传输的数据单位是比特。原创 2024-03-28 09:25:53 · 850 阅读 · 0 评论 -
C#___锁(lock)
对Blance进行加锁,然后创建100个Taks并行执行任务,保证在获取Balance的时候并不会线程之间混乱存取,保证秩序,当大于0的时候就存款,当小于0的时候就取款,所以最终结果就是2000。最常见的锁类型之一。它确保在任何时刻只有一个线程可以访问被保护的资源,其他线程必须等待锁的释放才能继续执行。一种忙等待的锁,当线程尝试获取锁时,如果发现锁已经被占用,它会一直循环等待直到锁可用。2、并行执行时,在锁的位置只有一个程序可以获得锁,其他程序无法获得;3、锁的出现使得并行执行得地方在锁的位置执行串行;原创 2024-03-25 17:11:57 · 633 阅读 · 0 评论 -
粘包/半包及解决方案
粘包(Packet Concatenation)通常发生在基于流式传输协议(如 TCP)的通信中,因为 TCP 是面向流的传输协议,它不保证数据包的边界,而是将数据视为连续的字节流,它表示客户端发送多条消息,服务端只收到了一条消息。原创 2024-03-25 15:55:37 · 2337 阅读 · 1 评论 -
C#使用Poll/Select实现多路I/O复用
在实际的应用中,如果全部采用异步的操作来,会增加代码的复杂程度,某些时候使用Poll/Select来实现单线程多路的I/O复用会更合适一些。比起异步程序,代码简单的多,这是Read接收,还有发送SelectWrite。若没有收到客户端数据,服务端也一直在循环,浪费了CPU。商业上为了做 到性能上的极致,大多使用异步(或使用多线程模拟异步程序)。使用socket.Poll方法检查套接字是否有可读数据,超时时间为0,即立即返回 ,如果套接字有可读数据,则执行后续操作。checkError:检测是否有出错。原创 2024-03-22 09:27:53 · 567 阅读 · 0 评论 -
C#实现简单异步Echo服务端和客户端(实现聊天室)
服务端需要处理多个连接,所以需要创建一个存储多个连接的列表,先定义一个ClientState类,保存一个客户端的全部信息,包括Socket,读缓冲区readBuff。上篇文章中我们使用Connect,Receive和Send来进行接收数据,会阻塞,它是在单一线程完成的,不具备灵活性。注:两个地方调用了BeginReceive,一个在Connect的回调函数,一个在结束一次接收后,解析后再次调用。对应IP,端口,回调函数,state参数用于传递用户自定义的对象或数据给回调函数。原创 2024-03-21 15:25:19 · 510 阅读 · 0 评论