server端的socket一般流程是這樣:
建立乙個socket(可以選擇socket型別inet,unix等,以及連線方式tcp/udp)
使用bind公開乙個埠,使得client可以方便連線
設定乙個listen佇列的大小
進入乙個無限迴圈,在此無限迴圈中,使用accept函式來等待客戶連線,此函式返回乙個新的socket, 對應於客戶端的socket,建立通訊通道。對socket的處理一般放在外部單獨的函式中(併發)
通過send()/recv()來對socket進行讀寫操作
例子:
1deftcpserver():
2 srvsock =socket.socket( socket.af_inet, socket.sock_stream)
3 srvsock.bind(('', 9527))
4 srvsock.listen(5) 56
while
true:
7 clisock, (remotehost, remoteport) =srvsock.accept()
8print
"[%s:%s] connected
" %(remotehost, remoteport) 9#
do something on the clisock
10clisock.close()
1112
13if
__name__ == "
__main__
":
14 tcpserver()
建立乙個新的socket
使用connect函式與遠端主機獲得連線
在此socket上進行i/o操作
例項:
1deftcpclient():
2 clisock =socket.socket(socket.af_inet, socket.sock_stream)
3 clisock.connect(('
localhost
', 9527)) 45
#i/o on this clisock 6#
clisock.send("") 7#
dat = clisock.recv(len) 89
dat
1011
if__name__ == "
__main__
":
12 tcpclient()
建立資料報形式的socket
公開乙個埠,一邊客戶端連線
開始接收資料
例項:
1defudpserver():
2 address = ('', 9527)
3 srvsock =socket.socket(socket.af_inet, socket.sock_dgram)
4srvsock.bind(address) 5#
data,addr = srvsock.recvfrom(2048) 67
if__name__ == "
__main__
":
8 udpserver()
需要注意的是,server中address元組中的引號表示可以接受任何位址來的資料報,tcp例子中的則表示可以接受任意位址發起的連線。
新建乙個資料報socket
收發資料
例項:
1defudpclient():
2 address = ('
localhost
', 9527)
3 clisock =socket.socket(socket.af_inet, socket.sock_dgram) 4#
clisock.sendto(data, address) 56
if__name__ == "
__main__
":
7 udpclient()
python網路程式設計 TCP網路程式設計
tcp程式設計 客戶端 import socket 1 套接字 tcp socket socket.socket socket.af inet,socket.sock stream 2 建立鏈結 tcp socket.connect 172.27.35.1 8080 3 傳送資訊 tcp socke...
python 網路程式設計
今天晚上學習了一下python的網路程式設計,實現了client向server傳送資料,server反饋資訊 python 3.3 版本 server from socket import class tcpserver object def init self,serverport self.se...
python網路程式設計
網路通訊是計算機之間的程序之間的通訊。tcp程式設計 tcp連線建立是雙向通道,客戶端與服務端都可以給對方傳送資料。建立tcp連線時,主動發起連線的叫客戶端,被動響應連線的叫服務端。建立乙個tcp的socket連線 用socket family,type 建立套接字獲得socket物件。family...