1、服務(wù)器就是一系列硬件或軟件,為一個(gè)或多個(gè)客戶端(服務(wù)的用戶)提供所需的“服務(wù)”。它存在唯一目的就是等待客戶端的請(qǐng)求,并響應(yīng)它們(提供服務(wù)),然后等待更多請(qǐng)求。
2、客戶端/服務(wù)器架構(gòu)既可以應(yīng)用于計(jì)算機(jī)硬件,也可以應(yīng)用于計(jì)算機(jī)軟件。
3、在服務(wù)器響應(yīng)客戶端之前,首先會(huì)創(chuàng)建一個(gè)通信節(jié)點(diǎn),它能夠使服務(wù)器監(jiān)聽(tīng)請(qǐng)求。
一、套接字:通信端點(diǎn)
1、套接字
套接字是計(jì)算機(jī)網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu),它體現(xiàn)了上節(jié)中所描述的“通信端點(diǎn)”的概念。在任何類(lèi)型的通信開(kāi)始之前,網(wǎng)絡(luò)應(yīng)用程序必須創(chuàng)建套接字。
有兩種類(lèi)型的套接字:基于文件和面向網(wǎng)絡(luò)的。
2、套接字地址:主機(jī)-端口對(duì)
如果一個(gè)套接字像一個(gè)電話插孔-允許通信的一些基礎(chǔ)設(shè)施,那么主機(jī)名和端口號(hào)就像區(qū)號(hào)和電話號(hào)碼的組合。有效的端口號(hào)范圍為0-65535(小于1024的端口號(hào)預(yù)留給了系統(tǒng))
3、面向連接的套接字和與無(wú)連接的套接字
面向連接,在進(jìn)行通信之前必須建立一個(gè)連接。實(shí)現(xiàn)這種連接類(lèi)型主要協(xié)議是TCP(傳輸控制協(xié)議)
無(wú)連接,在通信之前并不需要建立連接。主要協(xié)議是UDP(用戶數(shù)據(jù)報(bào)協(xié)議)
二、Python中的網(wǎng)絡(luò)編程
1、socket()模塊函數(shù)
為創(chuàng)建TCP/IP套接字:tcpSock = socket.socket(socket.AF_INEF,socket.SOCK_STREAM)
創(chuàng)建UDP/IP套接字:udpSock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
2.常見(jiàn)的套接字對(duì)象方法和屬性
| 名稱 | 描述 |
| 服務(wù)器套接字方法 | |
| s.bind() | 將地址(主機(jī)名、端口號(hào)對(duì))綁定到套接字上 |
| s.listen() | 設(shè)置并啟動(dòng)TCP監(jiān)聽(tīng)器 |
| s.accept() | 被動(dòng)接受TCP客戶端連接,一直等待直到連接到達(dá)(阻塞) |
| 客戶端套接字方法 | |
| s.connect() | 主動(dòng)發(fā)起TCP服務(wù)器連接 |
| s.connect_ex() | connect的擴(kuò)展版本,此時(shí)會(huì)以錯(cuò)誤代碼的形式返回問(wèn)題,而不是拋出一個(gè)異常 |
| 普通的套接字方法 | |
| s.recv() | 接受TCP消息 |
| s.send() | 發(fā)送TCP消息 |
| s.sendall() | 完整的發(fā)送TCP消息 |
| s.recvfrom() | 接收UDP消息 |
| s.shutdown() | 關(guān)閉連接 |
| s.close() | 關(guān)閉套接字 |
新聞熱點(diǎn)
疑難解答
圖片精選