python单线程模拟qq聊天器

利用套接字socket,模拟聊天器

1,客户端代码:

import socket

if __name__ == "__main__":
    silent_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    #连接服务器
    send_ip = input("请输入要发送的ip地址:")
    send_port = input("请输入要发送的端口号地址:")
    address = (send_ip, int(send_port))
    silent_socket.connect(address)

    while True:
        send_msg = input("输入想发送的文字")
        if send_msg != 'exit':
            #发送数据
            send_data = send_msg.encode("utf-8")
            silent_socket.send(send_data)

            #接收返回数据
            recv_data= silent_socket.recv(1024)
            recv_msg = recv_data.decode("utf-8")

            print(recv_msg)
        else:
            break
    silent_socket.close()



2 服务器端代码:

import socket

if __name__ == "__main__":
    #创建服务器socket
    serves_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    serves_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)

    #绑定服务器的ip地址和端口
    serves_address = ("", 9890)
    serves_socket.bind(serves_address)

    #监听,主动边被动
    serves_socket.listen(128)
    #使用accept 返回的连接上的socket
    client_socket, client_address = serves_socket.accept()
    while True:


        recv_data = client_socket.recv(1024)
        recv_msg = recv_data.decode("utf-8")
        print(recv_msg, client_address)

        #服务器发送的信息
        send_msg = input("输入返回客户端的数据")
        send_data = send_msg.encode("utf-8")
        client_socket.send(send_data)

    #关闭接收和发送数据的socket
    client_socket.close()

3 客户端测试结果:

请输入要发送的ip地址:192.168.243.130
请输入要发送的端口号地址:9990
输入想发送的文字你好啊,服务器大哥
不要喊我哥,我还未成年
输入想发送的文字好吧 我在你那个岁数的时候也没你这么p
来呀 相互伤害啊
输入想发送的文字exit
4服务器端测试结果:
你好啊,服务器大哥 ('192.168.243.1', 50065)
输入返回客户端的数据不要喊我哥,我还未成年
好吧 我在你那个岁数的时候也没你这么p ('192.168.243.1', 50065)
输入返回客户端的数据来呀 相互伤害啊
 ('192.168.243.1', 50065)
输入返回客户端的数据


猜你喜欢

转载自blog.csdn.net/feilzhang/article/details/80173708