udp
2019-04-02 本文已影响0人
程序设计法师
import socket
def main():
# 创建一个udp套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 可以使用套接字收发数据
udp_socket.sendto(b"helloworld", ("192.168.29.2", 8080))
# 关闭套接字
udp_socket.close()
if __name__ == "__main__":
main()
微信截图_20190402155824.png
发送任意类型的数据,不只是byte,可以发送string,利用encode("utf-8")
import socket
def main():
# 创建一个udp套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 可以使用套接字收发数据
while True:
send_data = input("请输入您想发送的数据")
if send_data == "exit":
break
# udp_socket.sendto(b"helloworld", ("192.168.29.2", 8080))
udp_socket.sendto(send_data.encode("utf-8"), ("192.168.29.2", 8080))
# 关闭套接字
udp_socket.close()
if __name__ == "__main__":
main()
E:\python_project\NetWork\venv\Scripts\python.exe E:/python_project/NetWork/UDP.py
请输入您想发送的数据feqwf q
请输入您想发送的数据无法却无法
请输入您想发送的数据你好
请输入您想发送的数据232323
请输入您想发送的数据fdwewf
请输入您想发送的数据是不是
请输入您想发送的数据exit
Process finished with exit code 0
数据接收.png
udp接收数据
import socket
def main():
# 创建套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定一个本地信息,自己的ip和端口
localaddr = ("", 49347)
udp_socket.bind(localaddr)
while True:
# 接收数据
recv_data = udp_socket.recvfrom(1024)
# 打印接收到的数据
# recv_data这个变量中存储的是一个元祖(接收到的数据,(发送方的ip,端口))
recv_message = recv_data[0] # 存储接收的数据
recv_address = recv_data[1] # 存储发送方的地址信息
# print(recv_data)
# windows默认编码格式gbk,所以此时不能用utf-8解码
print("发送方ip:%s 接收到的数据:%s" % (str(recv_address), recv_message.decode("gbk")))
udp_socket.close()
if __name__ == '__main__':
main()
E:\python_project\NetWork\venv\Scripts\python.exe E:/python_project/NetWork/ReceiveUdp.py
发送方ip:('192.168.29.2', 8080) 接收到的数据:呵呵
发送方ip:('192.168.29.2', 8080) 接收到的数据:呵呵你好
发送方ip:('192.168.29.2', 8080) 接收到的数据:呵呵你好我又来了
发送楼.png