【python】TCP协议编程
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                【python】TCP协议编程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                ?TCP協(xié)議適用于對效率要求相對較低而準確性要求很高的場合,例如文件傳輸、電子郵件等等,需要建立連接、數據傳輸、斷開連接三個步驟。
例:TCP通信程序。模擬機器人聊天軟件原理,服務端提前建立好字典,然后根據接收到的內容自動回復。
?客戶端代碼chatClient.py
import socket import sys# 服務端主機IP地址和端口號 HOST = '127.0.0.1' PORT = 50007 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try:# 連接服務器s.connect((HOST, PORT)) except Exception as e:print('Server not found or not open')sys.exit()while True:c = input('Input the content you want to send:')# 發(fā)送數據s.sendall(c.encode())# 從服務端接收數據data = s.recv(1024).decode()print('Received:', data)if c.lower() == 'bye':break # 關閉連接 s.close()?服務器端代碼chatServer.py
import socket from os.path import commonprefixwords = {'how are you?':'Fine,thank you.','how old are you?':'38','what is your name?':'Dong FuGuo',"what's your name?":'Dong FuGuo','where do you work?':'University','bye':'Bye'}HOST = '' PORT = 50007 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 綁定socket s.bind((HOST, PORT)) # 開始監(jiān)聽一個客戶端連接 s.listen(1) print('Listening on port:',PORT)conn, addr = s.accept() print('Connected by', addr) # 開始聊天 while True:data = conn.recv(1024).decode()if not data:breakprint('Received message:', data)# 盡量猜測對方要表達的真正意思m = 0key = ''for k in words.keys():# 刪除多余的空白字符data = ' '.join(data.split())# 與某個“鍵”非常接近,就直接返回if len(commonprefix([k, data])) > len(k)*0.7:key = kbreak# 使用選擇法,選擇一個重合度較高的“鍵”length = len(set(data.split())&set(k.split()))if length > m:m = lengthkey = k# 選擇合適的信息進行回復conn.sendall(words.get(key, 'Sorry.').encode()) conn.close() s.close()? 先運行chatServer.py,監(jiān)聽客戶端連接
?然后在dos窗口中,打開?chatClient.py所在的文件夾,輸入python?chatClient.py? +(發(fā)送內容)回車,完成發(fā)送數據。
啟動一個命令提示符環(huán)境并運行服務端程序,服務端開始監(jiān)聽;啟動一個新的命令提示符環(huán)境并運行客戶端程序,服務端提示連接已建立;在客戶端輸入要發(fā)送的信息后,服務端會根據提前建立的字典來自動回復。服務端每次都在固定的端口進行監(jiān)聽,而客戶端每次建立連接時可能會使用不同的端口。如果服務端程序沒有運行,那么客戶端就無法建立連接,當然也無法發(fā)送任何信息,這正是TCP協(xié)議區(qū)別于UDP協(xié)議的地方。
總結
以上是生活随笔為你收集整理的【python】TCP协议编程的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 数字图像处理学习路线
- 下一篇: tcp协议可以提供什么服务器,什么是TC
