python实现点对点聊天程序
更新时间:2018年07月28日 08:44:17 作者:csuzhucong
这篇文章主要为大家详细介绍了python实现点对点聊天程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
用Python实现点对点的聊天,2个程序,一个是client.py,一个是server.py,通过本机地址127.0.0.1连接进行通信,利用多线程把发送消息和接收消息分开独立进行。
client代码:
import socket
import sys
import threading
import time
class client():
def __init__(self):
self.s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
self.ip = "127.0.0.1"
def connect(self):
try:
self.s.connect((self.ip,8888))
print("connect success")
print('connect time: '+time.ctime())
except ConnectionError:
print('connect error')
sys.exit(-1)
except:
print('unexpect error')
sys.exit(-1)
def send_sth(self):
while True:
sth=input('say something:\n')
try:
self.s.sendall(sth.encode('utf-8'))
except ConnectionError:
print('connect error')
sys.exit(-1)
except:
print('unexpect error')
sys.exit(-1)
def receive(self):
while True:
try:
r=self.s.recv(1024)
print ('get message:'+r.decode('utf-8'))
except ConnectionError:
print('connect error')
sys.exit(-1)
except:
print('unexpect error')
sys.exit(-1)
c1 = client()
c1.connect()
threading._start_new_thread(c1.receive,())
c1.send_sth()
server代码:
import socket
import sys
import threading
import time
def server():
def bind():
HOST='127.0.0.1'
s.bind((HOST,8888))
print("bind ok")
def listen():
s.listen(10)
print ('Socket now listening')
def send_sth(conn):
while True:
try:
sth=input('say something:\n')
conn.sendall(sth.encode('utf-8'))
except ConnectionError:
print('connect error')
sys.exit(-1)
except:
print('unexpect error')
sys.exit(-1)
def recv(conn):
while True:
try:
data=conn.recv(1024)
data2=data.decode('utf-8')
print('get message:'+data2)
except ConnectionError:
print('connect error')
sys.exit(-1)
except:
print('unexpect error')
sys.exit(-1)
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
bind()
listen()
conn,addr=s.accept()
print("connect success")
print('connect time: '+time.ctime())
threading._start_new_thread(recv,(conn,))
send_sth(conn)
if __name__=='__main__':
server()
开启多线程有2种方法,上面2个程序都是用函数的方法,还有一种方法是用类继承threading类
代码:
import socket
import threading
class client(threading.Thread):
def __init__(self,sth):
threading.Thread.__init__(self)
self.sth=sth
def run(self):
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ip="127.0.0.1"
try:
s.connect((ip,8888))
except :
print('con error')
exit()
#print("connect success")
s.sendall(self.sth.encode('utf-8'))
#print("send success")
try:
r=s.recv(1024)
except:
print('recv error')
exit()
print (r.decode('utf-8'))
c1=client('hello 1')
c1.start()
c2=client('hello 2')
c2.start()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
基于python,Matplotlib绘制函数的等高线与三维图像
这篇文章主要介绍了基于python,Matplotlib绘制函数的等高线与三维图像,函数的等高线及其三维图像的可视化方法,下面一起来学习具体内容吧,需要的小伙伴可以参考一下2022-01-01
pandas read_excel()和to_excel()函数解析
这篇文章主要介绍了pandas read_excel()和to_excel()函数解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-09-09
详解pycharm的python包opencv(cv2)无代码提示问题的解决
这篇文章主要介绍了详解pycharm的python包opencv(cv2)无代码提示问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-01-01
Python使用wxPython和PyMuPDF提取PDF页面指定页数的内容
在本篇博客中,我们将探讨如何使用wxPython和PyMuPDF库创建一个简单的Bokeh应用程序,用于选择PDF文件并提取指定页面的内容,并将提取的内容显示在文本框中,需要的朋友可以参考下2023-08-08
关于Tensorflow中的tf.train.batch函数的使用
本篇文章主要介绍了关于Tensorflow中的tf.train.batch函数的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-04-04


最新评论