python socket模塊學習:python
一、socket:套接字。套接字基本上是兩個端點的程序之間的「信息通道」,用於描述IP地址和端口,服務器
是一個信息鏈的句柄,應用程序經過「套接字」向網絡發出請求或者應答網絡請求。網絡
套接字包括兩個:服務機套接字和客戶機套接字。在建立一個服務器套接字後,讓它等待鏈接。這樣併發
它就在某個網絡地址處(IP地址和一個端口號的組合)監聽,知道有客戶端套接字鏈接。鏈接完成後,socket
二者就能夠進行交互了。ide
二、python socket類的實例化的三個參數:學習
a、地址族(默認爲 socket.AF_INET)spa
b、流(默認爲 socket.SOCK_STREAM)操作系統
或者數據報(默認爲 socket.SOCK_DGRAM)server
c、使用的協議(默認爲0,使用默認值便可)
三、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