Articles of networking

我怎样才能检查在Python的networking接口上的数据传输?

有一种用于获取给定networking接口的IP的套接字方法: import socket import fcntl import struct def get_ip_address(ifname): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) return socket.inet_ntoa(fcntl.ioctl( s.fileno(), 0x8915, # SIOCGIFADDR struct.pack('256s', ifname[:15]) )[20:24]) 其中返回以下内容: >>> get_ip_address('lo') '127.0.0.1' >>> get_ip_address('eth0') '38.113.228.130' 有没有类似的方法来返回该接口的networking传输? 我知道我可以读取/proc/net/dev但我喜欢套接字方法。

我需要使用路由套接字安装什么软件包?

我正在尝试由Richard Stevens在Unix Network Programming中给出的代码。 但我无法获得编译的代码。 这里是源代码。 http://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15213-f00/unpv12e/libroute/ 我没有头文件net / if_dl.h和net / route.h头文件不包括代码使用的常量和结构。

我如何在Linux上用C语言获得我的IP地址?

我怎么能得到我的IP地址(最好是192.168.0.1格式)?

如何使用sendmsg()通过两个进程之间的套接字发送文件描述符?

在@cnicutar回答了这个问题之后 ,我尝试从父进程发送一个文件描述符给它的subprocess。 基于这个例子 ,我写了这个代码: int socket_fd ,accepted_socket_fd, on = 1; int server_sd, worker_sd, pair_sd[2]; struct sockaddr_in client_address; struct sockaddr_in server_address; /* ======================================================================= * Setup the network socket. * ======================================================================= */ if((socket_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("socket()"); exit(EXIT_FAILURE); } if((setsockopt(socket_fd, SOL_SOCKET, SO_REUSEADDR, (char *) &on, sizeof(on))) < 0) { perror("setsockopt()"); exit(EXIT_FAILURE); } server_address.sin_family […]

Socket recv()挂在MSG_WAITALL的大消息上

我有一个应用程序从服务器读取大型文件,并经常挂在特定的机器上。 它已经在RHEL5.2下成功运行了很长一段时间。 我们最近升级到RHEL6.1,现在它定期挂起。 我已经创build了一个重现问题的testing应用程序。 它挂起100次约98次。 #include <errno.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/param.h> #include <sys/stat.h> #include <sys/types.h> #include <unistd.h> #include <netdb.h> #include <sys/socket.h> #include <sys/time.h> int mFD = 0; void open_socket() { struct addrinfo hints, *res; memset(&hints, 0, sizeof(hints)); hints.ai_socktype = SOCK_STREAM; hints.ai_family = AF_INET; if (getaddrinfo("localhost", "60000", &hints, &res) != 0) { […]

Python:在linux中获取本地接口/ IP地址的默认网关

在Linux上,如何使用pythonfind本地ip地址/接口的默认网关? 我看到了“如何获得内部IP,外部IP和默认网关的UPnP”的问题,但接受的解决scheme只显示如何获得Windows上的networking接口的本地IP地址。 谢谢。

谁能给我最新的netlink编程样本?

我正在用netlink编写一个Linux驱动程序来在用户空间和内核空间之间进行通信。 但是我找不到一些有用的资料,因为netlink已经从Linux kernel> = 2.6.24改变了。 谁可以给我一些关于如何创build一个netlink套接字的build议。 提前致谢!

Linux select()vs ppoll()vs pselect()

在我的应用程序中,有一个io-thread,专门用于 在自定义协议中包装从应用程序接收的数据 通过tcp / ip发送数据+自定义协议包 通过tcp / ip接收数据+自定义协议包 解包自定义协议并将数据交给应用程序。 应用程序通过不同的线程处理数据。 此外,这些要求规定未确认的窗口大小应该是1,即,在任何时候只应该有一个未确认的未确认消息。 这意味着,如果io线程已经通过套接字发送了一个消息,它将不会再发送任何消息,直到它听到来自接收方的一个消息。 应用程序的处理线程通过pipe道与io-thread通信。 应用程序需要正常closures,如果有人从Linux CLItypesctrl + C。 因此,鉴于这些要求,我有以下选项 在套接字和pipe道描述符上使用PPoll() 使用select() 使用PSelect() 我有以下问题 select()和poll()之间的决定。 我的应用程序只处理less于50个文件描述符。 是否可以假设我selectselect还是投票是没有区别的? select()和pselect()之间的决定。 我阅读了linux文档,它说明了信号和select()之间的竞争条件。 我没有经验的信号,所以有人可以更清楚地解释竞争条件和select()? 这是否与某人在CLI上按ctrl + C和应用程序不停止? pselect和ppoll()之间的决定? 任何想法在一个之间

可以在一个连接的套接字读取()函数返回零字节?

我知道read()是一个阻塞调用,除非我使套接字非阻塞。 所以我期望read()调用请求4K的数据应该返回一个正值(读取的字节数)或错误-1(客户端可能的连接重置等)。 我的问题是:可以read()在任何情况下返回“0”? 我这样处理read(): if ((readval = read(acceptfd, buf, sizeof(buf) – 1)) < 0) { } else { buf[readval] = 0; //Do some thing with data } 这个代码炸弹,如果read()返回零,我知道如何解决它。 但是有可能read()返回零吗?

“零复制networking”与“内核旁路”?

“零复制networking”和“内核旁路”有什么区别? 他们是两个词组是相同的还是不同的? 内核是否绕过“零复制networking”中使用的技术,这是关系?