国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python實現(xiàn)點對點聊天程序

2020-02-15 22:34:17
字體:
供稿:網(wǎng)友

用Python實現(xiàn)點對點的聊天,2個程序,一個是client.py,一個是server.py,通過本機地址127.0.0.1連接進行通信,利用多線程把發(fā)送消息和接收消息分開獨立進行。

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個程序都是用函數(shù)的方法,還有一種方法是用類繼承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()

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林站長站。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宁远县| 武功县| 潞西市| 碌曲县| 石嘴山市| 苍山县| 辽阳县| 凤庆县| 汕尾市| 绥德县| 巩留县| 林口县| 通江县| 镇雄县| 获嘉县| 阿拉善左旗| 嵩明县| 莲花县| 阿图什市| 花莲县| 隆昌县| 江川县| 木里| 张家界市| 石柱| 洛川县| 德惠市| 建水县| 北辰区| 二手房| 朝阳市| 改则县| 邵东县| 芜湖市| 资中县| 仪陇县| 瓮安县| 西充县| 禹城市| 星子县| 高尔夫|