摘要:一個(gè)包來了之后,到底是交給瀏覽器還是,就需要端口號(hào)來區(qū)分。每個(gè)網(wǎng)絡(luò)程序都向操作系統(tǒng)申請(qǐng)唯一的端口號(hào),這樣,兩個(gè)進(jìn)程在兩臺(tái)計(jì)算機(jī)之間建立網(wǎng)絡(luò)連接就需要各自的地址和各自的端口號(hào)。
網(wǎng)絡(luò)通信的三要素
IP
通信的時(shí)候, 雙方必須知道對(duì)方的標(biāo)識(shí), 好比發(fā)郵件必須知道對(duì)方的郵件地址。 互聯(lián)網(wǎng)上每個(gè)計(jì)算機(jī)的唯一標(biāo)識(shí)就是IP地址, 類似 123.123.123.123 。
IP地址實(shí)際上是一個(gè)32位整數(shù)(稱為IPv4) , 以字符串表示的IP地址,如 192.168.0.1 實(shí)際上是把32位整數(shù)按8位分組后的數(shù)字表示, 目的是便于閱讀。 IPv6地址實(shí)際上是一個(gè)128位整數(shù), 它是目前使用的IPv4的升級(jí)版, 以字符串表示。類似于 2001:0db8:85a3:0042:1000:8a2e:0370:7334 。
端口port
在兩臺(tái)計(jì)算機(jī)通信時(shí), 只發(fā)IP地址是不夠的, 因?yàn)橥慌_(tái)計(jì)算機(jī)上跑著多個(gè)網(wǎng)絡(luò)程序。 一個(gè)IP包來了之后, 到底是交給瀏覽器還是QQ, 就需要端口號(hào)來區(qū)分。
每個(gè)網(wǎng)絡(luò)程序都向操作系統(tǒng)申請(qǐng)唯一的端口號(hào), 這樣, 兩個(gè)進(jìn)程在兩臺(tái)計(jì)算機(jī)之間建立網(wǎng)絡(luò)連接就需要各自的IP地址和各自的端口號(hào)。
TCP/UDP協(xié)議
為了把全世界的所有不同類型的計(jì)算機(jī)都連接起來, 就必須規(guī)定一套全球通用的協(xié)議,大家把互聯(lián)網(wǎng)的協(xié)議簡(jiǎn)稱TCP/IP協(xié)議
socket編程Socket是網(wǎng)絡(luò)編程的一個(gè)抽象概念。 通常我們用一個(gè)Socket表示“打開了一個(gè)網(wǎng)絡(luò)鏈接”, 而打開一個(gè)Socket需要知道目標(biāo)計(jì)算機(jī)的IP地址和端口號(hào), 再指定協(xié)議類型即可。
import socket # socket.gethostname()當(dāng)不傳入?yún)?shù)時(shí),返回本機(jī)主機(jī)名 print(socket.gethostname()) #DESKTOP-EN0LQJH #域名(英語:Domain Name),簡(jiǎn)稱域名、網(wǎng)域,是由一串用點(diǎn)分隔的名字組成的Internet上某一臺(tái)計(jì)算機(jī)或計(jì)算機(jī)組的名稱 #通過域名查找服務(wù)器IP地址 print(socket.gethostbyname("www.baidu.com")) #119.75.216.20 #通過一個(gè)IPv4的地址來獲取主機(jī)信息 print(socket.gethostbyaddr("114.114.114.114")) #通過IP/port組合,訪問服務(wù)器信息 # 如果是AF_INET則格式為:(address, port),如果為AF_INET6,則返回(address, port, flow info, scope id) print(socket.getaddrinfo("www.xunlei.com",80))用socket實(shí)現(xiàn)簡(jiǎn)易的web服務(wù)器
import socket def reply_info(socketObj): # socketObj.send("ok") with open("hello.html") as f: socketObj.send(f.read().encode("utf-8")) if __name__=="__main__": #1. 創(chuàng)建socket對(duì)象 socket_server = socket.socket() #2. 綁定IP和端口 socket_server.bind(("192.168.1.165",9999)) print("服務(wù)器端已經(jīng)啟動(dòng)9999端口......") #3. 監(jiān)聽是否有客戶端連接 socket_server.listen(5) while True: # 4. 接受客戶端的連接 socket_client,address = socket_server.accept() # 5. 接收客戶端發(fā)來的信息 data = socket_client.recv(1024) # 6. 與客戶端進(jìn)行交互, 返回給客戶端信息 reply_info(socket_server) socket_server.close()
圖過后貼上
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/42584.html
摘要:協(xié)程實(shí)現(xiàn)連接在網(wǎng)絡(luò)通信中,每個(gè)連接都必須創(chuàng)建新線程或進(jìn)程來處理,否則,單線程在處理連接的過程中,無法接受其他客戶端的連接。所以我們嘗試使用協(xié)程來實(shí)現(xiàn)服務(wù)器對(duì)多個(gè)客戶端的響應(yīng)。 協(xié)程實(shí)現(xiàn)TCP連接 在網(wǎng)絡(luò)通信中,每個(gè)連接都必須創(chuàng)建新線程(或進(jìn)程) 來處理,否則,單線程在處理連接的過程中, 無法接受其他客戶端的連接。所以我們嘗試使用協(xié)程來實(shí)現(xiàn)服務(wù)器對(duì)多個(gè)客戶端的響應(yīng)。與單一TCP通信的構(gòu)架...
摘要:我們來編寫一個(gè)簡(jiǎn)單的服務(wù)器程序,它接收客戶端連接,回復(fù)客戶端發(fā)來的請(qǐng)求。如果一切順利,新浪的服務(wù)器接受了我們的連接,一個(gè)連接就建立起來的,后面的通信就是發(fā)送網(wǎng)頁(yè)內(nèi)容了。 TCP TCP(Transmission Control Protocol 傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,由IETF的RFC 793定義。在簡(jiǎn)化的計(jì)算機(jī)網(wǎng)絡(luò)OSI模型中,它完成第四...
摘要:是建立可靠連接,并且通信雙方都可以以流的形式發(fā)送數(shù)據(jù)。相對(duì),則是面向無連接的協(xié)議。測(cè)試結(jié)果用兩個(gè)命令行分別啟動(dòng)服務(wù)器和客戶端測(cè)試開啟服務(wù)端完成一次通信 UDP TCP是建立可靠連接, 并且通信雙方都可以以流的形式發(fā)送數(shù)據(jù)。 相對(duì)TCP, UDP則是面向無連接的協(xié)議。使用UDP協(xié)議時(shí), 不需要建立連接, 只需要知道對(duì)方的IP地址和端口號(hào), 就可以直接發(fā)數(shù)據(jù)包。 但是, 能不能到達(dá)就不知道...
摘要:定義了所有元素的對(duì)象和屬性,以及訪問它們的方法。換言之,是關(guān)于如何獲取修改添加或刪除元素的標(biāo)準(zhǔn)。根據(jù)標(biāo)準(zhǔn),中所有內(nèi)容都是節(jié)點(diǎn)。好比我有兩個(gè)下拉列表,第一列表是選擇省份,那么我選擇某一個(gè)省份,那么另一個(gè)列表也會(huì)對(duì)應(yīng)顯示該省份的城市。 什么是DOM? DOM (Document Object Model) 譯為文檔對(duì)象模型,是 HTML 和 XML 文檔的編程接口。HTML DOM 定義了...
摘要:定義了所有元素的對(duì)象和屬性,以及訪問它們的方法。換言之,是關(guān)于如何獲取修改添加或刪除元素的標(biāo)準(zhǔn)。根據(jù)標(biāo)準(zhǔn),中所有內(nèi)容都是節(jié)點(diǎn)。好比我有兩個(gè)下拉列表,第一列表是選擇省份,那么我選擇某一個(gè)省份,那么另一個(gè)列表也會(huì)對(duì)應(yīng)顯示該省份的城市。 什么是DOM? DOM (Document Object Model) 譯為文檔對(duì)象模型,是 HTML 和 XML 文檔的編程接口。HTML DOM 定義了...
閱讀 3764·2021-11-24 10:25
閱讀 2768·2021-11-24 09:38
閱讀 1391·2021-09-08 10:41
閱讀 3166·2021-09-01 10:42
閱讀 2824·2021-07-25 21:37
閱讀 2151·2019-08-30 15:56
閱讀 1056·2019-08-30 15:55
閱讀 2899·2019-08-30 15:54