這篇文章帶給大家的內容是關於python中socket網路程式設計的詳細介紹(附範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
網路通訊的三要素
#IP
通訊的時候,雙方必須知道對方的標識, 好比發郵件必須知道對方的郵件地址。網路上每台電腦的唯一識別就是IP位址, 類似 123.123.123.123 。
IP位址其實是32位元整數(稱為IPv4) , 以字串表示的IP位址,如192.168.0.1 實際上是把32位元整數以8位元分組後的數字表示, 目的是便於閱讀。portport
在兩台電腦通訊時, 只發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實作簡易的網頁伺服器
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()
以上是python中socket網路程式設計的詳細介紹(附範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!