socket函式詳解
阿新 • • 發佈:2019-02-17
一、引數
socket.IF_INET IPV4協議
socket.IF_INET6 IPV6協議
socket.SOCK_STREAM TCP
socket.SOCK_DGRAM UDP
二、建立TCP套接字:
import socket
socket.socket(socket.IF_INET, socket.SOCK_STREAM)
三、建立UDP套接字:python
import socket
socket.socket(socket.IF_INET, socket.SOCK_DGRAM)
1. 服務端函式:
- s.bind(address) 將套接字繫結到地址,在AF_INET下,以元組(host, port)的形式表示地址
- s.listen(backlog)開始監聽TCP傳入連線 s.accept() 接收tcp連線並返回(conn,
- address),conn是新的套接字物件,address是連線客戶端的地址。
2. 客戶端socket函式:
s.connect(address) 連線到address處的套接字,一般address的格式為元組(hostname, port),如果連接出錯,返回socket.error錯誤。
3. 公共socket函式:
- s.recv(bufsize[,flag]) 接收TCP套接字的資料,資料以字串形式返回,bufsize指定要接受的資料大小
- s.send(string[,flag]) 傳送TCP資料,將string中的資料傳送到連線的套接字,返回值是要傳送的位元組數量。
- s.sendall(string[,flag]) 完整發送TCP資料,將string中的資料傳送到連線的套接字,返回之前會嘗試傳送所有資料,成功返回none,失敗丟擲異常。
- s.recvfrom(bufsize[.flag]) 接受UDP套接字的資料。與recv()類似,但返回值是(data,address)。其中data是包含接收資料的字串,address是傳送資料的套接字地址。
- s.sendto(string[,flag],address),傳送UDP資料。將資料傳送到套接字,address是 形式為(ipaddr,port)的元組,指定遠端地址。返回值是傳送的位元組數。
- s.close(),關閉套接字。
四、程式設計思路:
1、TCP服務端:
1 建立套接字,繫結套接字到本地IP與埠
# socket.socket(socket.AF_INET,socket.SOCK_STREAM) , s.bind()
2 開始監聽連線 #s.listen()
3 進入迴圈,不斷接受客戶端的連線請求 #s.accept()
4 然後接收傳來的資料,併發送給對方資料 #s.recv() , s.sendall()
5 傳輸完畢後,關閉套接字 #s.close()
2、TCP客戶端:
1 建立套接字,連線遠端地址
# socket.socket(socket.AF_INET,socket.SOCK_STREAM) , s.connect()
2 連線後傳送資料和接收資料 # s.sendall(), s.recv()
3 傳輸完畢後,關閉套接字 #s.close()