socket是python網路程式設計中必不可少的模組,是內建模組,可以直接匯入。
也稱其為套接字,是建立網路連線和會話的基礎。
建立套接字
import socket
s = socket.socket()
help(s)
s.close() # 關閉套接字
建立套接字所需引數
socket.socket(family=af_inet, type=sock_stream, proto=0, fileno=none)
socket.socket(a, b, c)
b: socketkind,套接字種類,取值(前兩個常用):
socket.sock_stream
socket.sock_dgram
socket.sock_raw
socket.sock_rdm
socket.sock_seqpacket
socket.sock_cloexec
socket.sock_nonblock
c: 協議,取值(此處省略了字首socket)及編號:
屬性和方法
settimeout方法:設定超時時間,建議在connect方法之前呼叫
connect方法:連線伺服器
connect_ex方法:與connect類似
send方法:傳送位元組型別的資料
sendto方法:傳送位元組型別的資料到指定位址
sendall方法:與send類似
recv方法:接收指定個數的位元組
recvfrom方法:與recv類似
accept方法:接受connect,返回套接字和位址
listen方法:監聽若干個埠
bind方法:繫結ip(字串如「1.2.3.4」)和埠(0-65525之間的整數)
setsockopt方法:設定引數選項
s = socket.socket(socket.af_inet, socket.sock_stream)
s.setsockopt(socket.sol_socket, socket.so_reuseaddr, 1) #開啟位址重用
s.bind((host, port))
import socket
# 獲取本機網絡卡的區域網ip 192.168.1.2
host = socket.gethostbyname(socket.gethostname())
# 建立原始套接字,將其繫結到 本機網絡卡(注意:需要管理員許可權)
s = socket.socket(socket.af_inet, socket.sock_raw, socket.ipproto_ip)
s.bind((host, 0))
# 設定包含 ip 頭
s.setsockopt(socket.ipproto_ip, socket.ip_hdrincl, 1)
# 接收所有資料報
s.ioctl(socket.sio_rcvall, socket.rcvall_on)
# 接收乙個資料報
print(s.recvfrom(65565))
# 關閉混雜模式
s.ioctl(socket.sio_rcvall, socket.rcvall_off)
getdefaulttimeout方法:檢視預設超時時間
setdefaulttimeout方法:設定預設超時時間
setblocking方法:設定阻塞
sock.setblocking(true) 等價於 sock.settimeout(none)
sock.setblocking(false) 等價於 sock.settimeout(0.0)
sendfile方法:用於傳送檔案
其他方法:
socket.gethostbyname(hostname)
socket.gethostbyname_ex(hostname)
socket.gethostname()
socket.gethostbyaddr(ip_address)
socket.getprotobyname(protocolname)
socket.getservbyname(servicename[, protocolname])
socket.getservbyport(port[, protocolname])
socket.getpeername()
socket.getsockname()
socket.getsockopt(level, optname[, buflen])
socket.getblocking()
socket.gettimeout()
異常:
socket.error
socket.herror
socket.gaierror
socket.timeout
**舉例:
socket.getaddrinfo("example.org", 80, proto=socket.ipproto_tcp)
linux socket網路程式設計之socket屬性
1.函式用法 include include int getsockopt int sockfd,int level,int optname,void optval,socklen t optlen 函式用於獲得某個套接字的屬性 int setsockopt int sockfd,int level...
網路程式設計 Python網路程式設計詳解socket
1 伺服器就是一系列硬體或軟體,為乙個或多個客戶端 服務的使用者 提供所需的 服務 它存在唯一目的就是等待客戶端的請求,並響應它們 提供服務 然後等待更多請求。2 客戶端 伺服器架構既可以應用於計算機硬體,也可以應用於計算機軟體。3 在伺服器響應客戶端之前,首先會建立乙個通訊節點,它能夠使伺服器監聽...
Python網路程式設計之UDP
udp處理資料報,是一種無連線的協議 伺服器端 server socket.socket socket.af inet,socket.sock dgram 繫結ip server.bind 192.168.1.104 221 while true 接收 data,address server.rec...