您好,登錄后才能下訂單哦!
python使用socket創建tcp服務器和客戶端。
服務器端為一個時間戳服務器,在接收到客戶端發來的數據后,自動回復。
客戶端,等待用戶輸入,回車后向服務器發送用戶輸入的內容。
分別在python2.7和python3.6下測試。在啟動時需要先啟動服務器端,在啟動客戶端。
python2.7下
服務器端代碼為
#coding:utf-8 from socket import * from time import ctime print("=====================時間戳TCP服務器====================="); HOST = '' #主機號為空白表示可以使用任何可用的地址。 PORT = 21567 #端口號 BUFSIZ = 1024 #接收數據緩沖大小 ADDR = (HOST, PORT) tcpSerSock = socket(AF_INET, SOCK_STREAM) #創建TCP服務器套接字 tcpSerSock.bind(ADDR) #套接字與地址綁定 tcpSerSock.listen(5) #監聽連接,同時連接請求的最大數目 while True: print('等待客戶端的連接...') tcpCliSock, addr = tcpSerSock.accept() #接收客戶端連接請求 print('取得連接:', addr) while True: data = tcpCliSock.recv(BUFSIZ) #連續接收指定字節的數據,接收到的是字節數組 if not data: #如果數據空白,則表示客戶端退出,所以退出接收 break tcpCliSock.send('[%s] %s' % (ctime(), data)) #向客戶端發送時間戳數據 tcpCliSock.close() #關閉與客戶端的連接 tcpSerSock.close() #關閉服務器socket
客戶端代碼為
#coding:utf-8 from socket import * print("=====================TCP客戶端====================="); HOST = '127.0.0.1' #服務器ip地址,等價于localhost PORT = 21567 #通信端口號 BUFSIZ = 1024 #接收數據緩沖大小 ADDR = (HOST, PORT) tcpCliSock = socket(AF_INET, SOCK_STREAM) #創建客戶端套接字 tcpCliSock.connect(ADDR) #發起TCP連接 while True: data = raw_input('> ') #接收用戶輸入 if not data: #如果用戶輸入為空,直接回車就會發送"",""就是代表false break tcpCliSock.send(data) #客戶端發送消息 data = tcpCliSock.recv(BUFSIZ) #接收回應消息,接收到的是字節數組 if not data: #如果接收服務器信息失敗,或沒有消息回應 break print(data) #打印回應消息 tcpCliSock.close() #關閉客戶端socket
python3.6下
服務器端代碼為
#coding:utf-8 from socket import * from time import ctime print("=====================時間戳TCP服務器====================="); HOST = '127.0.0.1' #主機號為空白表示可以使用任何可用的地址。 PORT = 21567 #端口號 BUFSIZ = 1024 #接收數據緩沖大小 ADDR = (HOST, PORT) tcpSerSock = socket(AF_INET, SOCK_STREAM) #創建TCP服務器套接字 tcpSerSock.bind(ADDR) #套接字與地址綁定 tcpSerSock.listen(5) #監聽連接,同時連接請求的最大數目 while True: print('等待客戶端的連接...') tcpCliSock, addr = tcpSerSock.accept() #接收客戶端連接請求 print('取得連接:', addr) while True: data = tcpCliSock.recv(BUFSIZ) #連續接收指定字節的數據,接收到的是字節數組 if not data: #如果數據空白,則表示客戶端退出,所以退出接收 break #tcpCliSock.send('[%s] %s' % (bytes(ctime(), 'utf-8'), data)) tcpCliSock.send(bytes('[%s] %s' % (ctime(), data.decode('utf-8')), 'utf-8')) #向客戶端發送時間戳數據,必須發送字節數組 tcpCliSock.close() #關閉與客戶端的連接 tcpSerSock.close() #關閉服務器socket
客戶端代碼為
#coding:utf-8 from socket import * print("=====================TCP客戶端====================="); HOST = '127.0.0.1' #服務器ip地址,等價于localhost PORT = 21567 #通信端口號 BUFSIZ = 1024 #接收數據緩沖大小 ADDR = (HOST, PORT) tcpCliSock = socket(AF_INET, SOCK_STREAM) #創建客戶端套接字 tcpCliSock.connect(ADDR) #發起TCP連接 while True: data = input('> ') #接收用戶輸入 if not data: #如果用戶輸入為空,直接回車就會發送"",""就是代表false break tcpCliSock.send(bytes(data, 'utf-8')) #客戶端發送消息,必須發送字節數組 data = tcpCliSock.recv(BUFSIZ) #接收回應消息,接收到的是字節數組 if not data: #如果接收服務器信息失敗,或沒有消息回應 break print(data.decode('utf-8')) #打印回應消息,或者str(data,"utf-8") tcpCliSock.close() #關閉客戶端socket
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。