复习 udp协议 socket 收发数据,发送飞秋数据
Posted 我在黑马的日子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了复习 udp协议 socket 收发数据,发送飞秋数据相关的知识,希望对你有一定的参考价值。
socket 发送数据
udp发送
导入socket
udpsocket = ()
udp.socket.sendto("neirong",(yuanzu))
这是由虚拟及发送到乌班图
使用udp发送的数据,需要添加ip和port
连续发送数据,每次的端口是动态的,一直在变化的,
端口容易占用,同意个os中,端口不允许相同,端口是用来区分,进程的,那么就不能狗把数据发送到特定端口,
----------------------------------------
飞秋有个漏洞,飞秋协议第一版本,
#将目标主机,端口换成需要发送的信息,
1:1522504151:llll:DESKTOP-3MGR0QK:32:李峻锋
将本地端口先换成2425,在进行修改,在2425中取到上面的信息,再次进行发送
---------------------------------------
import socket
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
udp_socket.bind(("",8080))
udp_socket.sendto("",("",7878))
一般情况下,发送方不用绑定,接收方需要绑定,
----------------------------------------
收:
import socket
udp_socket = socket.socket(socket.AF_INET.socket.SOCK_DGRAM)
recv_data = udp_socket.recvfrom(1024)
print(recv_data)
udp_socket.close()1024最大收取字节,
接收方一定要绑定,
---------------------------------------
python编码问题。
import socket
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
desk_ip = input("请输目的ip:")
desk_port = int(input("请输入目的端口:"))
send_data = input("请输入数据:")
udp_socket.sendto(send_data.encode("utf-8"),(desk_ip,des_port))#应该使用gbk
----------------------------------------
接收数据
import socket
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
udp_socket.bind(("",7788))
recv_data = udp_socket.recvfrom(1024)
content,destInfo = recv_data
print("content is %s"%content.decode("gbk"))
print("destInfo is %s"destInfo.decode("gbk"))
发送方
应用层:hello
传输层:hello 目的端口
网络层:hello 目的端口 目的ip
链路层:hello 目的端口 目的ip 目的mac
接收方就是解包:
-----------------------------------------------
聊天室
import socket 重要的是收,和打印
def main()
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
udp_socket.bind(("",6789))
wh ile True:
recv_info = udp_socket.recvfrom(1024)
recv_info 第0个元素是收到的信息,第一个元素是发送方的ip和端口组成的另外一个元组
print("%s:%s"%str((recvinfo[1]))#元组不能直接print需要转换成str,recvinfo[0].decode("gbk"))
if __name__ == "__main__":
main()
一定要学会封装 一个端口只能绑定一次,最少的重复代码才能加while true
-----------------------------------------------
echo服务器
-----------------------------------------------
1,什么叫下载
2.怎样完成下载
1.创建一个空文件
2.想里卖弄写数据
3.关闭
3.什么叫上传
f = open("test.jpg","bw")
while True:
recvDat = udpSocket.recvfrom(1024)
if xxx:
没有数据
break
else:
收到了数据
f.write(recvData)
f.close()
-----------------------------------------------
以上是关于复习 udp协议 socket 收发数据,发送飞秋数据的主要内容,如果未能解决你的问题,请参考以下文章
UDP 协议 C# UdpClient乱序接收数据包丢失的问题 Socket ReceiveBufferSize