python socket模塊學習:
1、socket:套接字。套接字基本上是兩個端點的程序之間的“信息通道”,用於描述IP地址和端口,
是一個信息鏈的句柄,應用程序通過“套接字”向網絡發出請求或者應答網絡請求。
套接字包括兩個:服務機套接字和客戶機套接字。在創建一個服務器套接字後,讓它等待連接。這樣
它就在某個網絡地址處(IP地址和一個端口號的組合)監聽,知道有客戶端套接字連接。連接完成後,
兩者就可以進行交互了。
2、python socket類的實例化的三個參數:
a、地址族(默認爲 socket.AF_INET)
b、流(默認爲 socket.SOCK_STREAM)
或者數據報(默認爲 socket.SOCK_DGRAM)
c、使用的協議(默認爲0,使用默認值即可)
3、socket 運行或者使用流程:
服務器端:
a、創建套接字,綁定套接字到本地IP與端口
#socket.socket(socket.AF_INET,socket.SOCK_STREAM,0)
#s.bind()
bind()方法是將套接字綁定到地址,在AF_INET下,以元組(host,port)的形式表示地址。
b、開始監聽連接
#s.listen()
listen(backlog)方法:開始監聽TCP傳入的連接,backlog指定在拒絕連接之前,操作系統可以掛起的
最大的連接數量。該值至少爲1,大部分應用程序設爲5就可以了。
c、進入循環,不斷接受客戶端的連接請求。
#s.accept() 接受TCP連接並返回(conn,address),其中conn是新的套接字對象,可以用來接收和發送數據。
address是連接客戶端的地址。
d、然後接受傳來的數據,併發送給對方數據
#s.recv() s.sendall()
e、傳輸完畢後,關閉套接字
#s.close()
客戶端:
a、創建套接字,連接遠端地址
#socket.socket(socket.AF_INET,socket.SOCK_STREAM,0)
#s.connect()
connect()方法:連接到address處的套接字。一般address的格式爲元組(hostname,port),如果連接出錯,
返回socket.error錯誤。
b、連接後發送數據和接收數據
#s.recv() s.sendall()
c、傳輸完畢後,關閉套接字
#s.close()
server.py:
import socket ip_port = ('127.0.0.1',9999) sk=socket.socket() sk.bind(ip_port) sk.listen(5) conn,address = sk.accept() conn.send('hello word ') conn.close()
client.py:
import socket client = socket.socket() ip_port = ('127.0.0.1',9999) client.connect(ip_port) data = client.recv(1024) print data