使用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..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的终端,右边是刚刚打包出来的可执行程序):