python模拟QQ聊天--socket通信

使用udp协议,多线程socket网络编程实现

      本篇博客针对有一点socket编程基础的同学,采用的udp协议,为了实现收发信息的实时性,采用了多线程的方式,话不多说,直接上代码(我把该文件名命名为 qq.py):

from socket import *
from threading import Thread

# 创建socket套接字
udp = socket(family=AF_INET, type=SOCK_DGRAM)
# 发送数据函数
def sentData(addr, desport):
    while True:
        data = input()
        udp.sendto(data.encode('utf8'),( addr, desport))
# 接收数据函数,绑定本地端口
def recvData(port):
    udp.bind(('', port))
    while True:
        data = udp.recvfrom( 1024 )
        print("\r>> " + data[0].decode('utf8') )

if __name__ == "__main__":
    addr = input("请输入对端通信地址:")
    desport = int(input("请输入对端通信端口:"))
    port = int(input("请输入本地绑定端口:"))
    t1 = Thread(target=sentData,args=(addr,desport) )
    t2 = Thread(target=recvData,args=(port,) )
    t1.start()
    t2.start()

使用 cx_Freeze 创建一个exe可执行程序来验证是否可以通信

      具体打包步骤可在以前的博客中了解:https://blog.csdn.net/qq_37648632/article/details/81334836,这里简单说明:

在当前目录中创建一个setup.py文件,然后粘贴下列代码(注意文件名):

from cx_Freeze import setup, Executable

buildOptions = dict(packages=[], excludes=[])
base = 'Console'
# 本篇博客创建的python文件名为 当前目录下的 qq.py 文件,可写绝对路径
executables = [Executable('qq.py', base=base)]
setup(name='test_project',
      version='1.0',
      description='test for cxfreeze',
      options=dict(build_exe=buildOptions),
      executables=executables)

然后在该目录中,按住 shift + 鼠标右键 ,选择   在此处打开命令窗口,输入命令:python setup.py build    即可打包完成 

进入build目录,里面有一个exe可执行程序,点击运行,输入地址,由于我是在一台电脑上测试的,所以IP使用的是同一个IP。注意端口的输入,大家可根据自己的实际情况做修改,结果如下(左边是pycharm的终端,右边是刚刚打包出来的可执行程序):

python模拟QQ聊天--socket通信_第1张图片

 

 

 

你可能感兴趣的:(python学习笔记)