加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python 实现半双工聊天器

发布时间:2020-12-17 17:05:00 所属栏目:Python 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #coding=utf-8import socket #加载socket模块from time import ctime#加载time模块ctime类HOST = ''#设置主机IP,为空则表示本机上所有的网卡ip。PORT

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

#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],sData))		#发送服务器信息。
						break
		
		except 	socket.error,detail:			#发生错误是关闭TCntSock,输出错误信息并等待下一次链接
			print detail
		closeTCnt()

finally:
	TSerSock.close()



以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读