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

首頁 > 編程 > Python > 正文

python實現點對點聊天程序

2020-01-04 14:48:20
字體:
來源:轉載
供稿:網友

用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()

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 仁布县| 江山市| 乐亭县| 邛崃市| 康马县| 安多县| 吉水县| 广平县| 万宁市| 游戏| 齐齐哈尔市| 上思县| 恭城| 华容县| 河北省| 荃湾区| 南江县| 醴陵市| 宁化县| 无锡市| 榆中县| 泽普县| 酒泉市| 乌拉特后旗| 松江区| 安丘市| 噶尔县| 塔河县| 南康市| 陆丰市| 谢通门县| 吴旗县| 小金县| 鹿邑县| 腾冲县| 永城市| 鲁甸县| 望都县| 正定县| 丰原市| 清水河县|