Python socket聊天腳本代碼實(shí)例
這篇文章主要介紹了Python socket聊天腳本代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
沒有前端,多開了一條線程用于接收信息。
服務(wù)器端:
# -*- coding:utf-8 -*- import socket import threading class Sock_Server: def __init__(self): self.host = '192.168.1.11' # 獲取主機(jī)名 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() # 被動(dòng)接口客戶端連接。 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('請(qǐng)輸入你要發(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() # 獲取主機(jī)名 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('請(qǐng)輸入你要發(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是進(jìn)程間進(jìn)行通訊很好的方式。
整個(gè)代碼在886輸入退出還存在一些問題,不改了。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python利用matplotlib繪制散點(diǎn)圖的新手教程
這篇文章主要給大家介紹了關(guān)于Python利用matplotlib繪制散點(diǎn)圖的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11python opencv對(duì)圖像進(jìn)行旋轉(zhuǎn)且不裁剪圖片的實(shí)現(xiàn)方法
今天小編就為大家分享一篇python opencv對(duì)圖像進(jìn)行旋轉(zhuǎn)且不裁剪圖片的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07python使用回溯算法實(shí)現(xiàn)列表全排列
這篇文章主要介紹了python使用回溯算法實(shí)現(xiàn)列表全排列,研究的問題是輸入列表L(不含重復(fù)元素),輸出L的全排列,全排列問題,可以用回溯法解決,需要的朋友可以參考下2023-11-11Django框架組成結(jié)構(gòu)、基本概念與文件功能分析
這篇文章主要介紹了Django框架組成結(jié)構(gòu)、基本概念與文件功能,簡(jiǎn)單分析了Django框架的基本架構(gòu)、組成、項(xiàng)目創(chuàng)建方法、模塊組成以及相關(guān)文件功能,需要的朋友可以參考下2019-07-07Python實(shí)現(xiàn)統(tǒng)計(jì)文本中字符的方法小結(jié)
在計(jì)算機(jī)編程中,經(jīng)常需要對(duì)文本數(shù)據(jù)進(jìn)行處理和分析,字符統(tǒng)計(jì)是其中一個(gè)常見任務(wù),本文將詳細(xì)介紹如何使用Python進(jìn)行字符統(tǒng)計(jì),希望對(duì)大家有所幫助2024-01-01Python實(shí)現(xiàn)貪吃蛇小游戲(雙人模式)
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)雙人模式的貪吃蛇小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09Python tkinter實(shí)現(xiàn)桌面軟件流程詳解
這篇文章主要介紹了Python tkinter做一個(gè)好用的桌面軟件,100%你會(huì)愛上它,文中的示例代碼講解詳細(xì),快跟小編一起動(dòng)手試一試吧2022-10-10