標籤:python
服務端#_*_ coding:utf-8 _*_#匯入socket模組import socket# 建立socket對象sk = socket.socket()#綁定偵聽的IP和連接埠號碼ip_port = (‘192.168.9.213‘,9999)sk.bind(ip_port)#最大串連數sk.listen(5)#接受請求,接受請求的時候可以擷取到用戶端的socket對象,以及用戶端的IP和連接埠#通過while迴圈,讓服務端一直接受用戶端請求print "正在等待用戶端請求"while True: conn ,address = sk.accept() # conn變數儲存的是用戶端的socket對象(conn就是用戶端),變數address儲存的是用戶端的IP地址和連接埠 print "已發生請求的用戶端,IP:%s 連接埠:%s" % (address[0], address[1]) #給用戶端發一條資訊內容 conn.send(‘hello word!‘) #給用戶端發送訊息 #一直偵聽用戶端發送過來的訊息 while True: client_data = conn.recv(1024) #接受用戶端發送過來的訊息 print client_data if client_data == ‘exit‘: break conn.send(‘sb‘) #向用戶端發送訊息 conn.close()用戶端
#_*_ coding:utf-8 _*_#匯入socket模組import socket#建立socket對象client = socket.socket()#串連伺服器ip_port = (‘192.168.9.213‘,9999)client.connect(ip_port) #和服務端建立串連while True: #擷取資料 data = client.recv(1024) #接受服務端發送過來的訊息 print data #列印服務端發送過來的訊息 #向服務端發送訊息 inp = raw_input(‘client data:‘) client.send(inp) # 向服務端發送訊息 if inp == ‘exit‘: break
執行過程
執行過程
1、服務端偵聽
2、用戶端和服務端建立串連
3、服務端向用戶端發送一條訊息“hello world!”
4、用戶端接受訊息
5、接著,用戶端可以輸入訊息,發送給服務端
6、服務端接收用戶端發送過來的訊息
7、然後向用戶端發送一條訊息“sb”
8、用戶端接收訊息
9、用戶端可以輸入訊息,發送給服務端
10、服務端接收用戶端發送過來的訊息
11、然後向用戶端發送一條訊息“sb”
12....一直迴圈
直到用戶端輸入的是“exit”發送給服務端
服務端判斷,如果用戶端發送過來的訊息是exit,那麼就停止偵聽用戶端發送過來的訊息,這時候用戶端也和服務端中斷連線
補充一個服務端,實現可以同時處理多個用戶端請求(非同步多線程服務端)
#_*_ coding:utf-8 _*_import SocketServerclass MyServer(SocketServer.BaseRequestHandler): def setup(self): pass def handle(self): #print self.request,self.client_address,self.server conn = self.request conn.send(‘hello word!‘) #給用戶端發一條資訊內容 # 一直偵聽用戶端發送過來的訊息 flag = True while flag: client_data = conn.recv(1024) #接受用戶端發送過來的訊息,1024代表最多隻能在緩衝區拿資料的大小,緩衝區預設為8K print client_data conn.send(‘sb‘) # 向用戶端發送訊息 if client_data == ‘exit‘: print ‘串連的用戶端已斷開‘ flag = False conn.close() def finish(self): passif __name__ == "__main__": server = SocketServer.ThreadingTCPServer((‘192.168.9.213‘,9999),MyServer) #偵聽的IP和連接埠號碼 server.serve_forever()
本文出自 “FA&IT營運-Q群:223843163” 部落格,請務必保留此出處http://freshair.blog.51cto.com/8272891/1878038
python socket編程之用戶端和服務端簡單互動