黑松山资源网 Design By www.paidiu.com
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 socket import sys import 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 socket import threading import 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系统上运行,如图:
将client.py在WindowsXP虚拟机上运行,如图:
OK,这就可以了,一个基于python的socket通信的文本框网络聊天室就写好了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
黑松山资源网 Design By www.paidiu.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
黑松山资源网 Design By www.paidiu.com
暂无评论...
更新日志
2024年10月07日
2024年10月07日
- 《丁当 20首重量级歌曲 Fu Good 下一站天后 2CD》[WAV/分轨][650MB]
- 歌莉雅.2012-My.Voice.Story【环星】【FLAC分轨】
- 群星.1993-一曲成名·青春无悔【飞碟】【WAV+CUE】
- 刘德华.2000-爱无知(金装版)【NEWMELODY】【WAV+CUE】
- 许巍《时光漫步》1CD[FLAC/分轨][804.3MB]
- 群星《2024第一季度百度歌曲排行抖音榜top100》1CD[FLAC/分轨][2.3GB]
- 张柏芝《全新经验》[FLAC/分轨][450MB]
- 唐朝.2008-浪漫骑士【音乐家】【WAV+CUE】
- 张芸京.2016-失败的高歌【泡耳音乐】【WAV+CUE】
- 群星.1991-音乐工厂1·皇后大道东【音乐工厂】【WAV+CUE】
- 群星.1992-音乐工厂2·首都【音乐工厂】【WAV+CUE】
- 群星.1994-音乐工厂3·儿童乐园【音乐工厂】【WAV+CUE】
- 胡鸿钧.2021-ex:CHANGE【星梦娱乐】【WAV+CUE】
- 班得瑞原装进口《第一张新世纪专辑:仙境》1CD[APE/CUE分轨][292.3MB]
- 伍佰《摇滚教父 伍佰黄金精选 2CD》[WAV+CUE][990MB]