Python socket聊天腳本代碼實(shí)例
這篇文章主要介紹了Python socket聊天腳本代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(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('請輸入你要發(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('請輸入你要發(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輸入退出還存在一些問題,不改了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
pandas數(shù)據(jù)的合并與拼接的實(shí)現(xiàn)
Pandas包的merge、join、concat方法可以完成數(shù)據(jù)的合并和拼接,本文主要介紹了這三種實(shí)現(xiàn)方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
python opencv實(shí)現(xiàn)圖像矯正功能
這篇文章主要為大家詳細(xì)介紹了python opencv實(shí)現(xiàn)圖像矯正功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
Python中zip()函數(shù)用法及應(yīng)用場景詳解
Python的zip()函數(shù)用于將多個(gè)可迭代對象的元素按位置組合成元組,支持不等長的可迭代對象和多個(gè)可迭代對象,這篇文章主要介紹了Python中zip()函數(shù)用法及應(yīng)用場景的相關(guān)資料,需要的朋友可以參考下2025-04-04
Python不要再使用while死循環(huán),定時(shí)器代替效果更佳
在python開發(fā)的過程中,經(jīng)常見到小伙伴直接使用while True的死循環(huán)+sleep的方式來保存程序的一直運(yùn)行。這種方式雖然能達(dá)到效果,但是說不定什么時(shí)候就直接崩潰了,其實(shí)使用定時(shí)器效果也不錯(cuò)哦2023-03-03
Python實(shí)現(xiàn)病毒仿真器的方法示例(附demo)
這篇文章主要介紹了Python實(shí)現(xiàn)病毒仿真器的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
pytorch讀取圖像數(shù)據(jù)轉(zhuǎn)成opencv格式實(shí)例
這篇文章主要介紹了pytorch讀取圖像數(shù)據(jù)轉(zhuǎn)成opencv格式實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06

