Articles of networking

广播UDP数据包到255.255.255.255

第一次海报,希望这是一个容易的: 我需要将广播数据包发送到一个硬件,当它通电时,它与我的机器位于不同的子网上,以便告诉它把IP地址重置为我networking上的IP地址。 但是,除非我使用DHCP,否则我似乎无法通过自己的子网进行广播,而最终我无法做到这一点。 networking上没有路由器,只是简单地在我的机器和我正在试图交谈的盒子之间切换,另外还有一些networking上的其他Linux机器。 所以基本上这个例子代码在testing环境(在我有DHCP启用的一个更大的networking上)在Fedora 19上工作,直到我尝试静态设置我的IP地址: int main(int argc, char *argv[]) { int sock; if( (sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1) { perror("socket : "); return -1; } int broadcast = 1; if( setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &broadcast, sizeof(broadcast)) != 0 ) { perror("setsockopt : "); close(sock); return -1; } char *ip = "255.255.255.255"; char […]

非阻塞networking地址parsing(gethostbyname或getaddrinfo)?

使用经典的nsswitch.confconfiguration: hosts: files dns 尝试使用gethostbyname (或getaddrinfo )parsing名称可能需要一段时间,如果DNS不应答(或configuration不当)。 有没有办法在nsswitch.conf中configuration超时,或使用替代API来pipe理超时?

在添加新的veth界面时运行脚本

Docker为每个创build的容器创build一个连接到桥( docker0 )的veth接口。 http://docs.docker.io/use/networking/ 我想限制这些新的veth接口的带宽。 我find了一个与奇迹般的做法。 不过,我想自动化这一点。 有没有办法让钩子在每次连接一个新的veth接口时运行一个脚本? 我已经研究过在/etc/network/if-up.d/添加脚本,但是只有在启动时veth添加veth 。 以下是我想要通知的一些系统日志。 我知道我可以尾巴这些日志,但是这种方法似乎有点哈克,必须有一种方式通过操作系统得到这个事件的通知。 May 2 23:28:41 ip-10-171-7-2 kernel: [22170163.565812] netlink: 1 bytes leftover after parsing attributes. May 2 23:28:42 ip-10-171-7-2 kernel: [22170163.720571] IPv6: ADDRCONF(NETDEV_UP): veth5964: link is not ready May 2 23:28:42 ip-10-171-7-2 kernel: [22170163.720587] device veth5964 entered promiscuous mode May 2 23:28:42 ip-10-171-7-2 avahi-daemon[1006]: Withdrawing […]

Socket编程发送()返回值

在linux下,或者windows套接字编程 我知道读取返回一个值,它表示成功接收的字节数。 这个返回值可能小于请求的长度。 (即,如果接收缓冲区只有50个字节,则read(sd,buf,100)可能会返回50) 这有可能吗? send(sd, buf, 100); 返回1〜99之间的值 如果是的话,现在是什么时候? 我想知道具体的例子情况。 先谢谢你

BSD套接字兼容包装winsock?

我试图将一个Linux应用程序移植到Windows。 该应用程序不是太复杂,使用所有相当标准的代码,很less有外部依赖。 主要的依赖是libelf(在mingw下编译得很好),pthreads(似乎有一个win32版本可用)和套接字。 主要的问题是套接字… Windows提供了WinSock,但是这与所有* nixes使用的BSD(Berkeley)套接字不是100%兼容的。 我想知道的是,是否有人在windows上公开了一个封装器来暴露一个BSD套接字API,但在后端调用Winsock,以便于移植?

了解netstat输出

tcp 0 0 :::111 :::* LISTEN 以上是netstat -nl | grep 111的输出 netstat -nl | grep 111 ::: 111段的含义是什么?

读取之后会发生什么情况是为Linux套接字调用的

调用read之后实际发生了什么: n = read(fd, buf, try_read_size); 这里fd是一个TCP套接字描述符。 buf是缓冲区。 try_read_size是程序试图读取的字节数。 我想这可能会最终调用一个系统调用内核。 但任何人都可以提供一些细节? 在glibc或内核源代码中说源代码的实现?

编程使用ARP

我需要一些可在Linux下编译的C或C ++代码,以便能够获取任意数量的远程主机的IP地址列表,并为每个主机获取以太网MAC地址。 这些主机可能在同一个子网上,或者它们可能在路由器的不同子网上。 如果某些或全部远程主机的MAC地址是路由器上接口的地址,那么可以。 最后,我想把IP地址和MAC地址交给FPGA,FPGA将使用这些信息格式化并通过以太网将UDP / IP数据包发送到主机。 显然,FPGA也会被赋予自己的MAC地址和IP地址来填充数据包中的源MAC和源IP地址。 是否有一些我可以指出的代码,可以创build和广播ARP数据包到这些远程机器,并接收ARP响应数据包,使目标MAC地址可以被提取?

在Linux上使用Python更改IP设置

我需要提供一个Python程序,允许用户dynamic改变他的设备(IP,掩码,DNS和网关)的networking参数。 例如,将他的IP从192.168.1.10/24更改为192.168.1.15/24。 我不想以root身份运行我的程序 – 但我可以给我的用户一些特定的权利(例如将用户添加到可以修改/usr/network/interfaces文件的组)。 我发现的是pynetlinux库,但它只提供IP和掩码修改,需要以root身份运行(或者我可能会误用它)。 我可以通过parsinginterfaces文件并运行一些bash / shell命令来做到这一点,但我不想重新发明轮子。 我很确定有些人已经有我的问题,做了一些伟大的事情。 我在Ubuntu 12.04上运行。 我需要我的程序在Ubuntu 14.04,CentOS和RedHat上工作

如何检测tcp客户端连接到服务器在c + +

我有一个TCP客户端/服务器,我想检测客户端的连接丢失; 因为我的客户端有多个接口,我一次连接到服务器与其中之一,我想知道如何检测客户端的连接丢失,以便我可以连接我的tcp客户端与另一个接口到服务器,如果他们全部我把我的数据存储在文本文件中。 我GOOGLE了,我已经看到保持活着,但不是我想要的。 如果这是重要的我的项目是在Linux和代码是在C + +。