代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Python
】
实现半双工聊天器
作者:
玉玲
/ 发布于
2014/12/13
/
764
尝试的做了一下半双工的聊天器,为后面做全双工的做准备。程序还是有瑕疵,不过可以做个参考。也请指导和指正
#coding=utf-8 import socket #加载socket模块 from time import ctime #加载time模块ctime类 HOST = '' #设置主机IP,为空则表示本机上所有的网卡ip。 PORT = 3300 #设置端口号 BUSIZ = 1024 #设置数据缓冲区,1KB ADDR = (HOST, PORT) def closeTCnt(): # TCntSock.close() print "Session closing.." TSerSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #创建一个TCP sokcet TSerSock.bind(ADDR) #绑定TCP socket的地址和端口 TSerSock.listen(1) #只接收一个请求,如后续后其他请求则会被拒绝 try: while True: print 'Waitting for connection...' (TCntSock, cntAddr) = TSerSock.accept() #TSerSock.accept 返回一个(conn, addr)的元组。 conn是一个socket对象,而addr是客户端IP地址和端口 print '...connection from:', cntAddr try: while True: rData = TCntSock.recv(BUSIZ) #接收客户端信息 if not rData: continue elif rData == 'quit': #当收到‘quit’后关闭TCntSock并等待下一次链接 break else: print 'From [%s] %s \n %s' % (cntAddr[0], ctime(), rData) while True: sData = raw_input('I:> ') if not sData: continue else: TCntSock.send('From [%s] %s \n %s' % (cntAddr[0], ctime(), sData)) #发送服务器信息。 break except socket.error ,detail: #发生错误是关闭TCntSock,输出错误信息并等待下一次链接 print detail closeTCnt() finally: TSerSock.close() #coding=utf-8 import socket HOST = 'localhost' #设置要链接的主机的IP PORT = 3300 #设置要链接的主机端口号 BUFSIZ = 1024 #设置缓冲区大小,设定为1K ADDR = (HOST, PORT) tryCon = 0 def TCnt(): tcpCliSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) while True: try: tcpCliSock.connect(ADDR) #与服务端链接 except: print u"正在尝试连接远程主机 " tryCon+=1 if tryCon == 3: print u"无法连接上远程主机,请稍后再试" exit() else: break print u'登陆成功(通讯结束请输入"quit"退出)\n' try: while True: data = raw_input('I:> ') if not data: continue elif data == 'quit': #通知服务端工作完成 tcpCliSock.send(data) break else: tcpCliSock.send(data) while True: data = tcpCliSock.recv(BUFSIZ) if not data: continue else: print data break except socket.error, e: print "Session closing" print e tcpCliSock.close() if __name__=="__main__": TCnt()
试试其它关键字
半双工
聊天器
同语言下
.
比较两个图片的相似度
.
过urllib2获取带有中文参数的url内容
.
不下载获取远程图片的宽度和高度及文件大小
.
通过qrcode库生成二维码
.
通过httplib发送GET和POST请求
.
Django下解决小文件下载
.
遍历windows的所有窗口并输出窗口标题
.
根据窗口标题调用窗口
.
python 抓取搜狗指定公众号
.
pandas读取指定列
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
玉玲
贡献的其它代码
(
18
)
.
Django下解决小文件下载
.
Linq查询出结果集中重复数据
.
实现银行卡号的校验
.
查询同一表内多字段同时重复记录
.
验证IPV6地址
.
实现数据库的映射实体的代码生成器
.
合并结构相同,不同,或多个DataTable
.
把两个数组合并,并删除第二个元素
.
ajax解析xml数据
.
布尔母函数
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3