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

首頁 > 編程 > Python > 正文

python實現文本界面網絡聊天室

2020-02-16 00:05:29
字體:
來源:轉載
供稿:網友

Hello大家好,今天說一下python的socket編程,基于python的socket通信的文本框網絡聊天

首先,實驗環境:

一個云服務器(我們這里是用的阿里云,大家將就自己的條件吧);

類Unix操作系統(如Mac OS,Linux等);

Windows系列操作系統。

在這里,我使用的是阿里云,Mac OSX,Windows XP(在mac上的一個虛擬機)。

Server.py

# -*- coding: utf-8 -*-#!/usr/local/bin/python import socketimport sysimport threading con = threading.Condition()HOST = "云空間的IP地址"PORT = 端口 data = '' s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)print 'Socket created's.bind((HOST, PORT))s.listen(10)print 'Socket now listening' def clientThreadIn(conn, nick):#開辟線程  global data  while True:#接受客戶端數據    try:      temp = conn.recv(1024)      if not temp:        conn.close()#連接關閉        return      NotifyAll(temp)      print data    except:      NotifyAll(nick + " leaves the room!")      print data      return  def NotifyAll(sss):#廣播  global data  if con.acquire():    data = sss    con.notifyAll()    con.release() def ClientThreadOut(conn, nick):#客戶端輸出  global data  while True:    if con.acquire():      con.wait()      if data:        try:          conn.send(data)          con.release()        except:          con.release()          return           while 1:  conn, addr = s.accept()  print 'Connected with ' + addr[0] + ':' + str(addr[1])  nick = conn.recv(1024)  NotifyAll('Welcome ' + nick + ' to the room!')  print data  print str((threading.activeCount() + 1) / 2) + ' person(s)!'  conn.send(data)  threading.Thread(target = clientThreadIn , args = (conn, nick)).start()#開辟線程  threading.Thread(target = ClientThreadOut , args = (conn, nick)).start() s.close()

Client.py

# -*- coding: utf-8 -*- import socketimport threadingimport getpass inString = ''outString = ''nick = '' def DealOut(s):  computername=socket.gethostname()#獲取計算機名  global nick, outString  while True:    outString = raw_input(nick+":")    outString = nick + "@" + computername + ': ' + outString    s.send(outString) def DealIn(s):  global inString  while True:    try:      inString = s.recv(1024)      if not inString:        break      if outString != inString:        print inString    except:      break     nick = getpass.getuser()#獲取操作系統用戶名ip = "云空間IP地址"sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)sock.connect((ip, 端口))sock.send(nick) thin = threading.Thread(target = DealIn, args = (sock,))#開辟一個讀入的線程thin.start()thout = threading.Thread(target = DealOut, args = (sock,))#開辟一個寫出的線程thout.start() 

將server.py上傳云端,運行,如圖:

將client.py在mac系統上運行,如圖:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 台南县| 永州市| 南充市| 探索| 南京市| 集安市| 吉安县| 两当县| 兰考县| 舟山市| 华蓥市| 高清| 博野县| 库尔勒市| 土默特左旗| 顺平县| 莱州市| 承德市| 建始县| 连云港市| 浙江省| 东平县| 新绛县| 方城县| 麟游县| 浮山县| 馆陶县| 西林县| 旬阳县| 甘孜| 汽车| 武定县| 西充县| 集安市| 碌曲县| 溆浦县| 衡阳市| 清水县| 岱山县| 乌拉特中旗| 弋阳县|