用Python写一个模拟qq聊天小程序的代码实例

Python 超简单的聊天程序

客户端:

import socket, sys

host = '10.248.27.23'

# host = raw_input("Plz imput destination IP:")

# data = raw_input("Plz imput what you want to submit:")

port = 51423

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

try:

s.connect((host, port))

except socket.gaierror, e:

print "Address-related error connecting to server: %s" %e

sys.exit(1)

except socket.error, e:

print "Connection error: %s" %e

sys.exit(1)

while 1:

try:

data = raw_input("I say: ")

s.send(data)

buf = s.recv(1024)

if len(buf):

print "he say: "+buf

except:

print "Dialogue Over"

s.close()

sys.exit(0)

服务器:

import socket, 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()

while 1:

try:

buf = ClientSock.recv(1024)

if len(buf):

print "he say: "+buf

data = raw_input("I say: ")

ClientSock.sendall(data)

except:

print "Dialogue Over"

ClientSock.close()

sys.exit(0)

模拟qq聊天,语言环境:Python3

示例代码:

# 编写一个程序,模拟qq聊天

# 要求:程序可以同时发消息和收消息,发和收的过程中程序不退出

# 思路:使用socket来完成(socket 是全双工模式,可以实现收和发同时进行),定义俩个线程,一个负责发消息、一个负责收消息

from threading import Thread

from socket import *

def rec_data():

while True:

rec_info = udpsocket.recvfrom(1024)

print("\r>>%s:%s" % (rec_info[1], rec_info[0].decode("gb2312")))

print("<<", end="")

def send_date():

while True:

send_mes = input("<<")

udpsocket.sendto(send_mes.encode("gb2312"), (desip, desport))

udpsocket = None

desip = ""

desport = 0

def main():

global udpsocket

global desip

global desport

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()

总结

以上是 用Python写一个模拟qq聊天小程序的代码实例 的全部内容, 来源链接: utcz.com/z/360037.html

回到顶部