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-11
python opencv對(duì)圖像進(jìn)行旋轉(zhuǎn)且不裁剪圖片的實(shí)現(xiàn)方法
今天小編就為大家分享一篇python opencv對(duì)圖像進(jìn)行旋轉(zhuǎn)且不裁剪圖片的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07
python使用回溯算法實(shí)現(xiàn)列表全排列
這篇文章主要介紹了python使用回溯算法實(shí)現(xiàn)列表全排列,研究的問題是輸入列表L(不含重復(fù)元素),輸出L的全排列,全排列問題,可以用回溯法解決,需要的朋友可以參考下2023-11-11
Django框架組成結(jié)構(gòu)、基本概念與文件功能分析
這篇文章主要介紹了Django框架組成結(jié)構(gòu)、基本概念與文件功能,簡(jiǎn)單分析了Django框架的基本架構(gòu)、組成、項(xiàng)目創(chuàng)建方法、模塊組成以及相關(guān)文件功能,需要的朋友可以參考下2019-07-07
Python實(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-01
Python實(shí)現(xiàn)貪吃蛇小游戲(雙人模式)
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)雙人模式的貪吃蛇小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
Python tkinter實(shí)現(xiàn)桌面軟件流程詳解
這篇文章主要介紹了Python tkinter做一個(gè)好用的桌面軟件,100%你會(huì)愛上它,文中的示例代碼講解詳細(xì),快跟小編一起動(dòng)手試一試吧2022-10-10

