香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > python >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

python实现点对点聊天程序


时间:2022-01-11 10:28 作者:admin610456


python/' target='_blank'>python实现点对点的聊天,2个程序,一个是client.py,一个是server.py,通过本机地址127.0.0.1连接进行通信,利用多线程把发送消息和接收消息分开独立进行。

client代码:

import socketimport sysimport threadingimport 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 socketimport sysimport threadingimport 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 socketimport threadingclass 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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)