UDP实现全双工聊天(聊天工具进阶)pyhton
生活随笔
收集整理的這篇文章主要介紹了
UDP实现全双工聊天(聊天工具进阶)pyhton
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
聊天工具的基礎(chǔ)版本,如果對下面的代碼看的有些難度,可以點擊訪問先看簡單的版本~
全雙工聊天就是指: 既可以任何一端,既可以發(fā)信息,又可以收信息,而且是獨立的。(之前的半雙工聊天,是每次只能有一端在發(fā)送信息,另外一端在對方?jīng)]有發(fā)送過來信息之前是不能發(fā)送信息的,只能等對方先寫好再來~)
- 所以說,全雙工還是比之前的先進了很多了呢~
代碼使用方法:
區(qū)別于之前的必須要有兩個不同端口的代碼,這次就更人性化了點。 只有一份代碼,因為每個人的功能都是類似的。
- 在本地輸入的命令框下,輸入 python Chat.py。這樣就可以使用了
- 為了演示完全,下面接著描述。
- 首先,會提示輸入對方的IP,不然不給你啟動。(哈哈,也就是不會接受對方的信息,這點還是很菜的,改設(shè)計可以完善)
- 然后,沒有什么特別的提示符。你在本機輸入信息就好了,對方如果也運行起同樣的代碼,對方就是可以接受到你的信息的。如果對方?jīng)]有登陸。那對方就是接受不到你的信息的。 這點類比于QQ的對方是離線的,你可以給對方發(fā)信息,但是對方收不到這個信息
- 收到對方信息時,同時會顯示對方的IP地址。以及你收到的時間。 之后就是收到的信息了~
祝各位小哥玩的愉快~代碼放在下面了~
from socket import * import threading from time import ctimedef Recv(sock, BUFSIZE=1024):print('Recver is UP!')while True:try:data, addr = sock.recvfrom(BUFSIZE)except OSError:breakprint('%s [%s]' % (addr[0], ctime()), data.decode())def main(targetHost, targetPost=21567):HOST = ''POST = 21567BUFSIZ = 1024ADDR = (HOST, POST)targetADDR = (targetHost, targetPost)UdpSock = socket(AF_INET, SOCK_DGRAM)UdpSock.bind(ADDR)# 開啟新線程,獲取信息threadrev = threading.Thread(target=Recv, args=(UdpSock, BUFSIZ))threadrev.start()# 主線程開始傳輸信息~while True:data = input('')UdpSock.sendto(data.encode(), targetADDR)if not data:print('End of Chat')breakUdpSock.close()if __name__ == '__main__':IP = input('輸入目標機器的IP地址: ')main(IP)總結(jié)
以上是生活随笔為你收集整理的UDP实现全双工聊天(聊天工具进阶)pyhton的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 聊天工具简单实现(python 半双工聊
- 下一篇: Python(Windows)下安装各种