python網路程式設計之socket

2021-10-01 23:45:47 字數 2955 閱讀 1587

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...