复习 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

wireshake抓包,飞秋发送信息,python

UDP的sendto和recvfrom,数据是怎么按照协议处理的?

python/socket编程之粘包

rpcsockettcp/udp简要梳理

UDP通讯协议