主机设置了固定IP时,python的recvfrom()接收不到数据怎么办??

项目需要设计dhcp服务器,给其他平台分配ip地址,然后使用tftp协议传输文件进行批量安装操作系统到各平台,本来打算用python写程序,但是将电脑的IP设置为固定IP时,recvfrom()接收不到平台发送的数据报文(广播方式,因为平台主板还没有IP地址),而设置自动获取IP模式却可以接收到(注:使用自动获取IP模式发送不了数据报文)。这怎么办??
大神们帮帮忙!挺急的,万分感谢

0

1个回答

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于recvfrom接收超时
recvfrom,这方法如果不特意设置,默认
关于udp socket recvfrom函数的一个易错问题: 如果应用程序指定的接收长度不够怎么办?
我们来看这样一个问题, 在udp socket变成中, sendto连续三次发送10个字节的数据,
linux udp 客户端recvfrom,一直没有数据接收,谁能帮看看这代码哪里出了问题了????
void* StartDiscoveryThread(void *arg) { int so_broadcast=1; struct sockaddr_in toAddr; //客户端的网络地址。 struct sockaddr_in serverAddr; //服务器端的网络地址。 char inBuff[DD_BUFF_LEN]; int sockaddrLen = 0; in
UDP接收消息的第一次显示对端的IP地址是0.0.0.0
这是小生第一次写博客,将自己在工作中发现的点点滴滴记载下来,与大家一起分享。 在写一个UDP服务器的端的时候,发现一个比较奇怪的现象,就是进程重启之后第一次接收到的消息的IP地址是0.0.0.0,但之后接收就能够正常显示接收消息的IP地址了,对此表示十分的疑惑。 recvfrom的函数原型如下,可以在linux终端下man一下。 ssize_t rec
解决recvfrom阻塞接受问题
recvfrom阻塞接收的问题,网络不通就一直等,想改成非阻塞的,也不可靠谱。最后设置了一个超时时间 struct timeval tv_out; tv_out.tv_sec = 3;//等待10秒 tv_out.tv_usec = 0; setsockopt(sock_fd,SOL_SOCKET,SO_RCVTIMEO,&tv_out, sizeof(tv_out))
recvfrom的使用技能之第一次接受打印出的发送方IP地址总是0.0.0.0
while(1) {     recvfrom(sockfd, readbuff, UDP_CMD_BUFF_LENGTH - 1, 0, (struct sockaddr *)&Glob_remot_88_port_add, &len);     PRINT("[recevudp]len %d IP is %s\n", len, inet_ntoa(Glob_remot_88_
pyton socket UDP接收端超时设置
UDP接收端超时设置 #coding:gb2312 import socket,sys import time s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) IP=socket.gethostbyname(so...
Python3实现ICMP远控后门(中)之“嗅探”黑科技
ICMP后门 前言   第一篇:Python3实现ICMP远控后门(上) 第二篇:Python3实现ICMP远控后门(上)_补充篇   在上两篇文章中,详细讲解了ICMP协议,同时实现了一个具备完整功能的ping工具,完整的代码发布在https://github.com/qiyeboy/LuLunZi/blob/master/NetWork/ping.py中。本次讲的是嗅探,为什么要讲...
关于UDP向本机端口发送数据报但是接收不到数据的问题
用UDP数据报发送数据给本机,数据可以发出去,但是服务端(本机)却接收不到任何数据,刚接触网络,请指教! 服务器端: SOCKET  server_socket_udp; sockaddr_in server_address_udp,from_address_udp; char server_data[20]="你好"; server_socket_udp=socket(AF_INET,
UDPchecksum值不对导致可以抓包获取到但是应用层recvfrom无法接收到数据
UDP checksum 今天在驱动里面改了UDP packet的payload,发出这个UDP包之后,对方在驱动里面能收到这个包。 但是indicate给OS之后,APP却收不到这个包。Debug了一段时间之后,我怀疑应该是checksum之类的问题,果然… 简单讲下UDP的checksum: UDP字段占用8个字节,checksum就是最后的两个字节,如果checksum==0,那么Recei...
解决windows下UDP网络数据接收时recvfrom时返回值为 -1 但是缓冲区buffer有数据的问题
引言 最近在windows下编写UDP网络服务器,用于接收来自Linux开发板发送过来的数据,遇到返回值-1 但是接收buffer中数据完整,本文介绍调试过程以及在调试过程中思路和方法。 一 问题描述 windows作为UDP服务器端,Linux下作为客户端,windows下每次接收recvfrom接收的数据返回值都是-1,通过windows下Wireshark抓包发现程序已经完整的接收数据,并...
一个关于UDP socket服务端接收长度不正确的问题
最近项目需要实现一个通过UDP协议和远端服务平台通讯的需求,简要描述如下: 本端为嵌入式linux路由器(udp客户端,linux C编码),远端为租用的阿里云服务器(udp服务端,java编码), 通信协议为UDP,本端会定时向远端服务器发送消息。 在实现和调试过程中发现一个问题: 1)将远端服务程序放在实验室pc机上调试没有问题,即“路由器-PC”交互正常。 2)将远端服务程序放
udp中recvfrom获取发送方的地址IP\port
struct sockaddr和struct sockaddr_in这两个结构体用来处理网络通信的地址。 一、sockaddr sockaddr在头文件#include <sys/socket.h>中定义,sockaddr的缺陷是:sa_data把目标地址和端口信息混在一起了,如下: 二、sockaddr_in sockaddr_in在头文件#include<net...
recvfrom接收不到数据了
在一个接收子线程里面接收下位机上送的数据,如下: rn while (ConnectFlag)rnrn if (pDlg->RecvFlag)rn rn int err = recvfrom(pDlg->socketclient,recvbuf,1000,0,(SOCKADDR*)&addrsv,&lenp);rn rnrn流程:上位机先下发命令给下位机配置参数,下位机一旦收到相应的信息(不是前句话讲的参数命令)就开始上送数据。问题:如果下位机停止上送数据接近一分钟,再次上送数据,recvfrom却接收不到数据,从PC端的截包工具已经看到下位机上送了数据且数据格式内容正确,这个时候只有再下发一次命令后,下位机一旦收到相应信息,recvfrom又能收到数据,至少说明接收子线程没有退出。注明:下发命令其实主要就是sendto函数,“截包工具已经看到下位机上送了数据”说明配置参数命令其实已经在下位机了,不明白为什么要再次下发命令一下又才能recvform。rn我把 recvfrom改成非阻塞模式,也是同样的现象。
recvfrom()收到数据,没有填充struct sockaddr和len
在学习steven的Unix Network Programming的UDP章节时,服务器的recvfrom在接收数据时,发现数据接收到了,但是recvfrom的结构体参数(struct sockaddr*)&client_addr和&len没有被填写,还是初始值。这是因为在recvfrom之前,要对len进行初始化, socklen_t len = sizeof(client_addr); re
如何获取socket中ReceiveFrom接收的数据的字节长度?
clientSocket = new Socket("localhost", PORT);         clientSocket.setReuseAddress(true); byte[] buffer = new byte[clientSocket.getInputStream().available()]; clientSocket.getInputStream().read(
sendto与recvform接收数据中乱码问题
最近一直在数据转发问题,在工作的过程中碰到了一个令我非常头痛的问题,当我用函数sendto发送数据(例如sddaaa)时,可是在接收端有recvfrom接收数据,接收的数据居然是H 直接贴代码,想问题:
recvfrom()中如何接收结构体
UDP编程时经常需要使用sendto()和recvfrom()两个函数,其中recvfrom()的函数原型是: ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,                         struct sockaddr *src_addr, socklen_t *addrlen); 一般来说
udp socket 接收数据
import socket if __name__ == '__main__': # 1. 创建udp协议socket udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 2. 准备数据 send_content = "哈哈,我又来了发送数据啦~" # 对字符串进行gbk的编码获...
recvfrom接收udp包代码,注释中写明了几点注意事项
错误点在注释中写明
php接收指定IP发送过来的数据参数
    最近做一个短信投票的接口,为了避免短信平台和投票网站数据不一致,还有就是避免其他通过盗用接口进行数据post而导致一些对账出现损失。所以需要指定特定IP的服务器发送过来的数据才是有效的,其他IP的都不作处理。   实现方法就是在接口接收程序里面做接收数据IP判断,只有允许的IP的数据我们才接收入库。 php获取数据发送方IP信息的代码为: <? if(getenv('H...
关于linux下的udp/tcp通信设置发送sendto/接收recvfrom信息超时的参数。解决通道堵塞问题。
在UDP/TCP通信的时候,如果发送一条指令过去,而该指令是操作设置指令对方没有反馈信息的时候,会在发送成功后被搞死。就是发送不能新的指令,而对方也一直没有新的信息发过来的这种状态。这时候可以设置一个超时的参数,一定时间内没有接收到新的信息,就自动跳过了。然后重新进入通信循环while(1)。接收超时:struct timeval timeout;timeout.tv_sec=3;        ...
Rancher中的容器如何使用固定的IP地址?-使用io.rancher.container.requested_ip标签
问:Rancher中的容器如何使用固定的IP地址? 答:创建服务时,使用io.rancher.container.requested_ip标签 附图:
(转载)Python的 Socket编程接收数据
[code="Python"] import socket import sys try: s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) except socket.error: print('Failed to create socket') sys.exit() print("Socket Crea...
多进程udp接收recvfrom返回-1原因分析
最近看网络编程,运行书上一个udp
minerOS手动配置ip教程
minerOS手动配置ip使用putty或者securecrt等软件登陆设备内网地址,或者设备直接连接键盘显示器进行配置先输入用户名mos密码mos进入系统输入sudo -i进入root用户输入密码mos输入vi /etc/network/interfaces进入接口配置文档把图1修改成图2按a进入编辑模式进行修改,修改后按esc退出编辑模式按shift+:输入wq退出并保存图1图2退出后输入re...
获取本机收到的UDP数据包的目标地址
本机收到UDP数据时,通过recvfrom函数可以直接获取发送者的地址: int recvfrom( __in SOCKET s, __out char* buf, __in int len, __in int flags, __out struct sockaddr* from,
使用select为recvfrom设置超时
int readable_timeo(int fd, int sec) { fd_set rset; struct timeval tv; FD_ZERO(&rset); FD_SET(fd, &rset); tv.tv_sec = sec; tv.tv_usec = 0; return (select(fd+1, &rset, NULL, NULL, &tv)); }
解决socket关闭后read、recvfrom 等函数依旧无法退出阻塞
最近项目遇到一个问题,程序退出的时候资源没有正常释放。经过调试发现,原来是网络线程一直阻塞,导致一些必要的资源没有被释放,写了几个简单的测试程序调试了一下才明白,原来在Linux下直接close socket的文件描述符,并不会使程序中调用的一些阻塞式的socket函数(比如 read、recvfrom 等)退出阻塞,从而导致无法正常释放资源。简化示例如下。    下面是一个简化的UDP服务程序,...
UDP服务recvfrom函数设置非阻塞
基本概念: 方法一:通过fcntl函数将套接字设置为非阻塞模式。 方法二:通过套接字选项SO_RECVTIMEO设置超时。 方法一源码,编译:g++ udp_server.cpp -o server #include #include #include #include #include #include #include #include #include #i
VMware中配置linux网络仅主机模式配置及IP开关机变动
VMware Workstation Pro虚拟机中可视化linux网络配置仅主机模式设置静态IP 我们发现每次重启虚拟机后仅主机模式的IP都会发生改变,所以我们需要将它设为静态. 1:打开VMware配置虚拟网络 2.点击添加网络 3.选择网络名称(无所谓) 4.选择仅主机模式,修改自己指定的子网IP192.168.xx.0,点击应用 5.在电脑网络中查看网络是否配置...
原始套接字,接收所有数据的设置方法,及代码。
在看一本安全编程书的时候读到原始套接字地方,自己也尝试写了下来,将遇到的一个问题发出来。 // 原始套接字数据的接收.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "stdio.h" #include "Winsock2.h" #include #include "mstcpip.h" #pragma comment(lib,"w
静态IP的设置与VMware虚拟机主机ping不通虚拟机的解决
静态IP的设置与VMware虚拟机主机ping不通虚拟机的解决 标题感谢原作者! 标题原文地址:https://blog.csdn.net/m0_37520980/article/details/80537084 虚拟机中Centos设置静态IP地址方法 (一)虚拟机设置 首先要修改一下虚拟机,<选择虚拟网络编辑器> 对照着上面的图一个一个解释吧. 首先要选择NAT模式,这里我选择的...
recvfrom接收不到数据,求解
用SmartSniff抓包看到接收缓冲区里有数据,可是用recvfrom接收数据时,有时可以接收到数据,有时却收不到数据,求解释。
通过socket连接获取本机IP地址
#include   #include   #include   #include   #include   #include   #include   #include   #include   #include     #define PORT 443   #define MAXDATASIZE 1024     int main()  
带超时时间的sendto和recvfrom(用SO_SNDTIMEO和SO_RCVTIMEO搞起)
       在udp中, 可以用SO_SNDTIMEO和SO_RCVTIMEO来实现发送、接收的超时设置, 下面以SO_RCVTIMEO为例来看看:#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <netin...
socket发送和接收固定长度数据的函数
#include "stdafx.h" #include "ATLComTime.h" #include "Functions.h" #include     #pragma   comment(lib,   "rpcrt4.lib ")  CRITICAL_SECTION _criticalLog; extern string _ExePath; //接收數
VMware centos 设置固定ip,宿主机无法ping通虚拟机问题
因为平时做实验时不能同时操作几台电脑.所以只能靠虚拟机解决. 但是每次虚拟机重启以后有可能ip发生变化,所以就设置虚拟机固定ip地址. 最终达到的效果为,VMware中的虚拟机能够固定ip,同时能够连上外网.
VMware NAT主机和虚拟机共同上网,并为虚拟机设置固定IP,防止重启IP变换
先把参考攻略地址发下:http://blog.csdn.net/dream19881003/article/details/7076079这个写不错,并且尝试后(主机无线上网,虚拟机NAT方式上网)成功了,我补充一下原文的细节:1. VMware Network Adapter VMnet8的网关和DNS可以设置成为一样;2. 无视操作系统提示网关和DNS不在同一个网段3. 虚拟机的DNS也可以和...
UDP接收端缓冲区和丢包问题
实习项目需要用Winsock内核模式驱动提供的sockets方法,,这个驱动负责连接和缓冲管理,对应用程序提供socket风格的编程接口。 大概的流程是发送端将一幅图像分成多个包进行发送,接收端接收包整合成图像并显示。 通过测试发现,发送端是相机,采用udp协议,发送的图像数据包有3428个,并且通过wireshark抓取到全部的包,但是接收端只能接收到3000个包左右,出现了丢包
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 物联网主机价格 云计算主机价格