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

首頁 > 編程 > Python > 正文

python實(shí)現(xiàn)簡單多人聊天室

2020-01-04 13:51:31
字體:
供稿:網(wǎng)友

本文實(shí)例為大家分享了python實(shí)現(xiàn)多人聊天室的具體代碼,供大家參考,具體內(nèi)容如下

剛開始學(xué)習(xí)python,寫了一個聊天室練練手。

Server.py

import socket,select,thread; host=socket.gethostname()port=5963addr=(host,port)   inputs=[]fd_name={} def who_in_room(w):  name_list=[]  for k in w:    name_list.append(w[k])      return name_list def conn():  print 'runing'  ss=socket.socket()  ss.bind(addr)  ss.listen(5)    return ss def new_coming(ss):  client,add=ss.accept()  print 'welcome %s %s' % (client,add)  wel='''welcome into the talking room .  please decide your name.....'''  try:    client.send(wel)    name=client.recv(1024)    inputs.append(client)    fd_name[client]=name        nameList="Some people in talking room, these are %s" % (who_in_room(fd_name))    client.send(nameList)      except Exception,e:    print e  def server_run():   ss=conn()  inputs.append(ss)    while True:    r,w,e=select.select(inputs,[],[])    for temp in r:      if temp is ss:        new_coming(ss)      else:        disconnect=False        try:          data= temp.recv(1024)          data=fd_name[temp]+' say : '+data        except socket.error:          data=fd_name[temp]+' leave the room'          disconnect=True                  if disconnect:          inputs.remove(temp)          print data          for other in inputs:            if other!=ss and other!=temp:              try:                other.send(data)              except Exception,e:                print e                    del fd_name[temp]                  else:          print data                    for other in inputs:            if other!=ss and other!=temp:              try:                other.send(data)              except Exception,e:                print e  if __name__=='__main__':  server_run()

client.py

import socket,select,threading,sys; host=socket.gethostname() addr=(host,5963) def conn():  s=socket.socket()  s.connect(addr)  return s def lis(s):  my=[s]  while True:    r,w,e=select.select(my,[],[])    if s in r:      try:        print s.recv(1024)      except socket.error:        print 'socket is error'        exit()      def talk(s):  while True:    try:      info=raw_input()    except Exception,e:      print 'can/'t input'      exit()    try:      s.send(info)    except Exception,e:      print e      exit()      def main():  ss=conn()  t=threading.Thread(target=lis,args=(ss,))  t.start()  t1=threading.Thread(target=talk,args=(ss,))  t1.start()if __name__=='__main__':  main()

運(yùn)行時先啟動服務(wù)端。進(jìn)入聊天室先起一個昵稱。服務(wù)端會向客戶端發(fā)送當(dāng)前聊天室內(nèi)聊天人的列表。一個客戶端發(fā)出的消息會通過服務(wù)端發(fā)給其他客戶端。

效果如下:

python,聊天室

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


注:相關(guān)教程知識閱讀請移步到python教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 天镇县| 惠来县| 义乌市| 修水县| 大洼县| 阆中市| 札达县| 泰顺县| 五指山市| 石城县| 广昌县| 平舆县| 宁河县| 天长市| 徐州市| 桐柏县| 石家庄市| 沈阳市| 开远市| 平原县| 怀安县| 江口县| 上高县| 尼玛县| 巴彦县| 郸城县| 屏东县| 中阳县| 长乐市| 南丰县| 铜山县| 子洲县| 邵阳县| 衡南县| 烟台市| 游戏| 翁源县| 团风县| 荆门市| 丹江口市| 长寿区|