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

首頁 > 編程 > Python > 正文

python實現(xiàn)文本界面網(wǎng)絡聊天室

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

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

首先,實驗環(huán)境:

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

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

Windows系列操作系統(tǒng)。

在這里,我使用的是阿里云,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:#接受客戶端數(shù)據(jù)    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()#獲取操作系統(tǒng)用戶名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上傳云端,運行,如圖:

python,網(wǎng)絡聊天室

將client.py在mac系統(tǒng)上運行,如圖:

 

python,網(wǎng)絡聊天室

將client.py在WindowsXP虛擬機上運行,如圖:

python,網(wǎng)絡聊天室

OK,這就可以了,一個基于python的socket通信的文本框網(wǎng)絡聊天室就寫好了。

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


注:相關教程知識閱讀請移步到python教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 合作市| 通城县| 钟祥市| 大姚县| 扎鲁特旗| 元江| 巴林左旗| 呼和浩特市| 乃东县| 方山县| 灵璧县| 宜阳县| 化德县| 原平市| 灵台县| 青海省| 烟台市| 萨迦县| 从江县| 贵港市| 博客| 昭通市| 彰化县| 新晃| 青冈县| 宁南县| 宜良县| 蓬安县| 罗江县| 确山县| 石台县| 明水县| 永平县| 盐城市| 和田市| 晋江市| 峨眉山市| 滕州市| 台州市| 铁岭县| 刚察县|