用Python写一个模拟qq聊天小程序的代码实例
Python超简单的聊天程序
客户端:
importsocket,sys host='10.248.27.23' #host=raw_input("PlzimputdestinationIP:") #data=raw_input("Plzimputwhatyouwanttosubmit:") port=51423 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) try: s.connect((host,port)) exceptsocket.gaierror,e: print"Address-relatederrorconnectingtoserver:%s"%e sys.exit(1) exceptsocket.error,e: print"Connectionerror:%s"%e sys.exit(1) while1: try: data=raw_input("Isay:") s.send(data) buf=s.recv(1024) iflen(buf): print"hesay:"+buf except: print"DialogueOver" s.close() sys.exit(0)
服务器:
importsocket,traceback,sys host='' port=51423 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) s.bind((host,port)) s.listen(1) ClientSock,ClientAddr=s.accept() while1: try: buf=ClientSock.recv(1024) iflen(buf): print"hesay:"+buf data=raw_input("Isay:") ClientSock.sendall(data) except: print"DialogueOver" ClientSock.close() sys.exit(0)
模拟qq聊天,语言环境:Python3
示例代码:
#编写一个程序,模拟qq聊天 #要求:程序可以同时发消息和收消息,发和收的过程中程序不退出 #思路:使用socket来完成(socket是全双工模式,可以实现收和发同时进行),定义俩个线程,一个负责发消息、一个负责收消息 fromthreadingimportThread fromsocketimport* defrec_data(): whileTrue: rec_info=udpsocket.recvfrom(1024) print("\r>>%s:%s"%(rec_info[1],rec_info[0].decode("gb2312"))) print("<<",end="") defsend_date(): whileTrue: send_mes=input("<<") udpsocket.sendto(send_mes.encode("gb2312"),(desip,desport)) udpsocket=None desip="" desport=0 defmain(): globaludpsocket globaldesip globaldesport desip=input("对方IP:") desport=int(input("对方端口:")) udpsocket=socket(AF_INET,SOCK_DGRAM) udpsocket.bind(("",9001)) tr=Thread(target=rec_data) ts=Thread(target=send_date) tr.start() ts.start() tr.join() ts.join() if__name__=='__main__': main()
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接