socket聊天室笔记
3-25和26 多线程与服务器------ -------------------------------- 1.委托复习 2.文件流复习 真正输出缓存数据到硬盘的是 Flush()方法.
3.多线程: 命名空间 System.Threading 多线程的目的: 1.让CPU主动执行不同的程序单元,这样就不至于被 某个程序的破坏性代码引起死机症状. 2.理想上能在"同时"做多个事情. 4.线程的Start()方法只是标记该线程可以运行了,具体的运行时间还是由CPU来决定
5.网络通信socket IP与端口号: system.Net 套接字socket: system.Net.Sockets;
IPAddress address=IPAddress.Parse(ip地址): 保存IP地址 IPEndPoint endPoint=new IPEndPoint(address,int.parsr(端口号)): 保存网络节点 (ip和port组成) socket.Bind(endpoint);将套接字 绑定到对应的端口 socket.Listen(10); 为套接字 设置监听队列
socket.Accept(); 接受客户端发来的请求.---- SocketconnectionSocket=socket.Accept(); Accept() 方法会阻塞当前的线程,从来实现不断接收客户端请求. 若有连接过来 则返回一个负责与客户端通信的套接字
connectionSocket.RemoteEndPoint 发送请求的客户端的IP与端口信息
监听队列Listen(): 同时能够处理的请求个数. 服务器的监听套接字的Listen(5)方法设置了监听队列长度为5,那么 当同时有6个客户端发送连接请求时,那么监听套接字就会拒绝一个, 然后让剩下的5个存储在队列中,一个一个为他们闯将服务端的通信套 接字那么当队列中有空的位置出现,恰好有新客户端连接请求发来时 那么久直接排入队列处理两个数组间的拷贝方法: Buffer.BlockCopy(老数组,拷贝索引,新数组,复制索引,复制长度);