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