socket聊天室笔记
3-25和26 多線程與服務(wù)器------ -------------------------------- 1.委托復(fù)習(xí) 2.文件流復(fù)習(xí) ?真正輸出緩存數(shù)據(jù)到硬盤的是 Flush()方法.
3.多線程: 命名空間 System.Threading ?多線程的目的: ??1.讓CPU主動(dòng)執(zhí)行不同的程序單元,這樣就不至于被 ???? 某個(gè)程序的破壞性代碼引起死機(jī)癥狀. ??2.理想上能在"同時(shí)"做多個(gè)事情. 4.線程的Start()方法只是標(biāo)記該線程可以運(yùn)行了,具體的運(yùn)行時(shí)間還是由CPU來決定
5.網(wǎng)絡(luò)通信socket ?IP與端口號(hào): system.Net ??????? ?套接字socket: system.Net.Sockets;
?IPAddress address=IPAddress.Parse(ip地址): 保存IP地址 ?IPEndPoint endPoint=new IPEndPoint(address,int.parsr(端口號(hào))): 保存網(wǎng)絡(luò)節(jié)點(diǎn)??????? (ip和port組成) ?socket.Bind(endpoint);將套接字 綁定到對(duì)應(yīng)的端口 ?socket.Listen(10); 為套接字 設(shè)置監(jiān)聽隊(duì)列
?socket.Accept();? 接受客戶端發(fā)來的請(qǐng)求.----??????? SocketconnectionSocket=socket.Accept(); ?Accept() 方法會(huì)阻塞當(dāng)前的線程,從來實(shí)現(xiàn)不斷接收客戶端請(qǐng)求. ??????? 若有連接過來 則返回一個(gè)負(fù)責(zé)與客戶端通信的套接字
?connectionSocket.RemoteEndPoint 發(fā)送請(qǐng)求的客戶端的IP與端口信息
??????? 監(jiān)聽隊(duì)列Listen():? 同時(shí)能夠處理的請(qǐng)求個(gè)數(shù). ????????? 服務(wù)器的監(jiān)聽套接字的Listen(5)方法設(shè)置了監(jiān)聽隊(duì)列長(zhǎng)度為5,那么 ????????? 當(dāng)同時(shí)有6個(gè)客戶端發(fā)送連接請(qǐng)求時(shí),那么監(jiān)聽套接字就會(huì)拒絕一個(gè),??????????????????????? 然后讓剩下的5個(gè)存儲(chǔ)在隊(duì)列中,一個(gè)一個(gè)為他們闖將服務(wù)端的通信套???????????????????????? 接字那么當(dāng)隊(duì)列中有空的位置出現(xiàn),恰好有新客戶端連接請(qǐng)求發(fā)來時(shí) ????????? 那么久直接排入隊(duì)列處理兩個(gè)數(shù)組間的拷貝方法: ??Buffer.BlockCopy(老數(shù)組,拷貝索引,新數(shù)組,復(fù)制索引,復(fù)制長(zhǎng)度);
轉(zhuǎn)載于:https://www.cnblogs.com/zxp19880910/archive/2012/09/01/2666280.html
總結(jié)
以上是生活随笔為你收集整理的socket聊天室笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javaScript(1):基础部分
- 下一篇: C预编译处理