Articles of networking

谁能给我最新的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”中使用的技术,这是关系?

使用GNU / Linux系统调用`splice`在Haskell中进行Zero-Copy Socket到Socket的数据传输

更新:Nemo先生的回答帮助解决了这个问题! 下面的代码包含修复! 请参阅下面的nb False和nb True调用。 还有一个叫做splice的新的Haskell软件包 ,它具有最好的套接字到套接字数据传输循环的操作系统特定的和可移植的实现。 我有以下(Haskell)代码: #ifdef LINUX_SPLICE #include <fcntl.h> {-# LANGUAGE CPP #-} {-# LANGUAGE ForeignFunctionInterface #-} #endif module Network.Socket.Splice ( Length , zeroCopy , splice #ifdef LINUX_SPLICE , c_splice #endif ) where import Data.Word import Foreign.Ptr import Network.Socket import Control.Monad import Control.Exception import System.Posix.Types import System.Posix.IO #ifdef LINUX_SPLICE import Data.Int import […]

为什么C99抱怨存储大小?

这是我在Linux上编译的一些代码: #include <net/if.h> int main() { struct ifreq ifr; } gcc test.c 。 gcc -std=gnu99 test.c 。 gcc -std=c99 test.c失败,出现以下错误: test.c: In function 'main': test.c:4:16: error: storage size of 'ifr' isn't known C99有什么不同,它不喜欢Linux中struct ifreq的定义?

从PHP应用程序通过networking打印

我有一组打印机通过networking连接,分配给每台打印机的静态IP。 现在我有一个PHP Web应用程序运行在需要发送打印作业的Linux服务器上,通过networking打印到这些打印机上。 这可能使用lpr或杯子,我怎么去做。

如何处理Linux套接字revellent POLLERR,POLLHUP和POLLNVAL?

我想知道当轮询设置这些位时应该做什么? closures套接字,忽略它或什么?

在c / c ++中查找可用的networking接口

有没有人知道ac / c + +代码find可用的networking接口? 我一直在寻找一些代码,但大部分时间都是相当复杂的。 有一个简单的方法来做到这一点? UPDATE 在Ubuntu / Linux上

如何通过Java获得Linux上的计算机的IP?

如何通过Java获得Linux上的计算机的IP? 我search了networking的例子,我发现一些关于NetworkInterface类,但我不能包裹我的头如何获得IP地址。 如果我有多个networking接口在同一时间运行会发生什么? 哪个IP地址将被返回。 我真的很感激一些代码示例。 PS:我到目前为止已经使用了InetAddress类,这是跨平台应用程序的一个糟糕的解决scheme。 (WIN / Linux的)。