3.0网络通信模型-UDP

一、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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值