一、udp发送数据
#coding:utf-8
import socket
def main():
# 创建套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
dest_addr = ('192.168.0.100',8080) #目标地址信息
while True:
send_data = input('输入发送信息:') #输入发送信息
udp_socket.sendto(send_data.encode('gbk'),dest_addr) #发送消息并编码
if send_data == 'exit':
break
udp_socket.close() #关闭套接字
if __name__ == '__main__':
main()
二、udp接收数据
#coding:utf-8
import socket
def main():
# 1.创建套接字
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 2.绑定端口
local_addr = ('', 8080)
udp_socket.bind(local_addr)
while True:
recv_data = udp_socket.recvfrom(1024) #接收消息,并限制最大字长1024
recv_msg = recv_data[0] #存储接收到的消息
send_addr = recv_data[1] #存储接收到的地址
print('%s:%s' % (str(send_addr),recv_msg.decode('gbk'))) #转换字符类型+解码 并打印
if recv_msg == 'exit':
break
udp_socket.close() #关闭套接字
if __name__ == '__main__':
main()
三、udp收发数据(合并)
#coding:utf-8
import socket
def send_msg(udp_socket): #形参,也可以是send_msg(a),下面函数定义的udp_socket也要改成a
'''发送消息'''
dest_ip = input('请输入对方的ip:')
dest_port = int(input('请输入对方的port:')) #input输出结果为字符串,转换为数字
send_data = input('请输入要发送的消息:')
udp_socket.sendto(send_data.encode('gbk'), (dest_ip, dest_port))
def recv_msg(udp_socket):
'''接收数据'''
recv_data = udp_socket.recvfrom(1024) #未接收数据时进程堵塞,直到数据过来或在强制杀死
print('%s:%s' % (str(recv_data[1]), recv_data[0].decode('gbk'))) #接收windows用gbk解码,linux/mac用utf-8
def main():
# 创建套接字:全双工(另外有单工、半双工)
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
#绑定端口-元组
udp_socket.bind(('', 8080))
#循环处理收发消息事件
while True:
print('-----xxx聊天器-----')
print('1.发送消息')
print('2.接收消息')
print('0.退出系统')
op = input('请输入功能:')
if op == '1':
# 发送
send_msg(udp_socket) #传参-局部变量
elif op == '2':
# 接收并显示
recv_msg(udp_socket) #传参-局部变量
elif op == '0':
break
else:
print('输入有误,请重新输入...')
#关闭套接字
udp_socket.close()
if __name__ == '__main__':
main()
linux安装网络调试助手:
1.安装包拖入虚拟机桌面
2.打开终端命令窗口,进入安装包目录
3.输入命令
sudo dpkg -i mNetAssist-release-amd64.deb