這篇文章給大家分享的是有關(guān)Python中socket聊天腳本的示例分析的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
成都創(chuàng)新互聯(lián)公司自成立以來,一直致力于為企業(yè)提供從網(wǎng)站策劃、網(wǎng)站設計、成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設、電子商務、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個性化軟件開發(fā)等基于互聯(lián)網(wǎng)的全面整合營銷服務。公司擁有豐富的網(wǎng)站建設和互聯(lián)網(wǎng)應用系統(tǒng)開發(fā)管理經(jīng)驗、成熟的應用系統(tǒng)解決方案、優(yōu)秀的網(wǎng)站開發(fā)工程師團隊及專業(yè)的網(wǎng)站設計師團隊。沒有前端,多開了一條線程用于接收信息。
服務器端:
# -*- coding:utf-8 -*- import socket import threading class Sock_Server: def __init__(self): self.host = '192.168.1.11' # 獲取主機名 self.port = 12345 # 端口 self.ser = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 設置模式 self.ser.bind((self.host, self.port)) self.ser.listen(5) print('等待客戶端連接:') self.sock, self.addr = self.ser.accept() # 被動接口客戶端連接。 print(f'客戶:{self.addr},已經(jīng)連接') def recv(self): # 接收信息模塊 try: while True: recv_info = self.sock.recv(1024) if recv_info: print('\n收到消息:', recv_info.decode()) if recv_info == '886': self.sock.close() self.ser.close() print('聊天結(jié)束!over') break finally: self.sock.close() self.ser.close() def send(self): try: while True: send_info = input('請輸入你要發(fā)送的內(nèi)容:') self.sock.send(send_info.encode()) if send_info == '886': self.sock.close() self.ser.close() print('聊天結(jié)束!over') break finally: self.sock.close() self.ser.close() if __name__ == '__main__': sock = Sock_Server() t1 = threading.Thread(target=sock.recv) t1.start() sock.send()
客戶端:
# -*- coding:utf8 -*- import socket import threading class Sock_Cli: def __init__(self): self.host = socket.gethostname() # 獲取主機名 self.port = 12345 # 端口 self.ser = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 設置模式 self.ser.connect((self.host, self.port)) def recv(self): # 接收信息模塊 try: while True: recv_info = self.ser.recv(1024) if recv_info: print('\n收到消息:', recv_info.decode()) if recv_info == '886': self.ser.close() print('聊天結(jié)束!over') break finally: self.ser.close() def send_info(self): try: while True: send_info = input('請輸入你要發(fā)送的內(nèi)容:') self.ser.sendall(send_info.encode()) if send_info == '886': self.ser.close() print('聊天結(jié)束!over') break finally: self.ser.close() if __name__ == '__main__': cli = Sock_Cli() t1 = threading.Thread(target=cli.recv) t1.start() cli.send_info()
socket是進程間進行通訊很好的方式。
整個代碼在886輸入退出還存在一些問題,不改了。
感謝各位的閱讀!關(guān)于“Python中socket聊天腳本的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!