對(duì)于TCP協(xié)議來(lái)說(shuō), SOCKET就相當(dāng)于是一個(gè)現(xiàn)實(shí)生活中的個(gè)人招待所. 首先來(lái)說(shuō)個(gè)人招待所要有個(gè)位置,所以通過(guò)bind, 把這個(gè)個(gè)人招待所的位置確定好, 個(gè)人招待所的服務(wù)員也得要得到消息了才能夠上班來(lái)接待顧客, 所以要listen,君账〉客戶(hù)現(xiàn)在就可connect到接待處, 任何客戶(hù)要進(jìn)入, 都首先得要被個(gè)人招待所Accept, 得到一個(gè)臨時(shí)通行證, 才能夠在個(gè)人招待所里進(jìn)行各種業(yè)務(wù), 而被接待后, 有什么事, 得要拿臨時(shí)通行證來(lái)識(shí)別每一個(gè)客戶(hù), 而輪到服務(wù)某個(gè)客戶(hù)的時(shí)間, 也是通過(guò)這個(gè)臨時(shí)通行證呼叫客戶(hù)才能夠通信敛劝。
所以 TCP 的服務(wù)器, 創(chuàng)建SOCKET, bind, listen, accept, 然后再用accept回來(lái)的客戶(hù)專(zhuān)用臨時(shí)通行證進(jìn)行交流. 客戶(hù)走的時(shí)候也必須把臨時(shí)通行證回收, 也就是關(guān)閉accept回來(lái)的socket.
由此可見(jiàn)TCP有用于監(jiān)聽(tīng)的套接字和用于接待的的套接字巍佑,共兩個(gè)。
對(duì)于UDP協(xié)議來(lái)說(shuō), SOCKET就相當(dāng)于想是生活中的網(wǎng)絡(luò)客服, 一個(gè)網(wǎng)絡(luò)客服可以同時(shí)服務(wù)N個(gè)顧客, 只要顧客發(fā)消息過(guò)來(lái)了, 這個(gè)網(wǎng)絡(luò)客服就可以跟顧客進(jìn)行聯(lián)系, 并且這個(gè)網(wǎng)絡(luò)客服可以處理很多消息, 任何顧客發(fā)消息過(guò)來(lái),網(wǎng)絡(luò)客服都迅速的同時(shí)處理這些消息. 但是, 只要顧客不來(lái)消息聯(lián)系網(wǎng)絡(luò)客服,網(wǎng)絡(luò)客服就沒(méi)什么必要主動(dòng)聯(lián)系.
UDP的服務(wù)器, 只要bind以后就可以直接等待recvfrom, 有人sendto東西過(guò)來(lái), 就立即做事, 沒(méi)有sendto過(guò)來(lái), 也沒(méi)什么必要做事. 雖然不排除服務(wù)器隔開(kāi)一段時(shí)間后主動(dòng)向客戶(hù)發(fā)送東西, 但這個(gè)客戶(hù)到底還在不在, 已經(jīng)不知道了. 所以一般服務(wù)器是懶得動(dòng)的坊萝,所以u(píng)dp只要知道IP地址和端口號(hào)就可以連接了孵稽,其他的不用理會(huì)。
由此可見(jiàn)udp只需要一個(gè)套接字就可以了十偶。
再總結(jié)下吧菩鲜,從這上面的流程看得出來(lái)了吧:
tcp有監(jiān)聽(tīng)還有能接待,比較負(fù)責(zé)惦积,也就是說(shuō)它的可靠性好接校,安全性高,但是效率要差點(diǎn)狮崩。
udp來(lái)說(shuō)蛛勉,雖然他不像tcp那么負(fù)責(zé),也就是他可靠性不高睦柴,但是有信息來(lái)他馬上就直接處理诽凌,說(shuō)明他效率高。