用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()
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接