Python socket聊天腳本代碼實例
更新時間:2020年01月02日 09:07:17 作者:就是想學習
這篇文章主要介紹了Python socket聊天腳本代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
這篇文章主要介紹了Python socket聊天腳本代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
沒有前端,多開了一條線程用于接收信息。
服務(wù)器端:
# -*- 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) # 設(shè)置模式 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) # 設(shè)置模式 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輸入退出還存在一些問題,不改了。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python opencv對圖像進行旋轉(zhuǎn)且不裁剪圖片的實現(xiàn)方法
今天小編就為大家分享一篇python opencv對圖像進行旋轉(zhuǎn)且不裁剪圖片的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07Django框架組成結(jié)構(gòu)、基本概念與文件功能分析
這篇文章主要介紹了Django框架組成結(jié)構(gòu)、基本概念與文件功能,簡單分析了Django框架的基本架構(gòu)、組成、項目創(chuàng)建方法、模塊組成以及相關(guān)文件功能,需要的朋友可以參考下2019-07-07Python實現(xiàn)統(tǒng)計文本中字符的方法小結(jié)
在計算機編程中,經(jīng)常需要對文本數(shù)據(jù)進行處理和分析,字符統(tǒng)計是其中一個常見任務(wù),本文將詳細介紹如何使用Python進行字符統(tǒng)計,希望對大家有所幫助2024-01-01Python tkinter實現(xiàn)桌面軟件流程詳解
這篇文章主要介紹了Python tkinter做一個好用的桌面軟件,100%你會愛上它,文中的示例代碼講解詳細,快跟小編一起動手試一試吧2022-10-10