相关疑难解决方法(0)

如何找到linux的socket缓冲区大小

什么是linux的默认套接字缓冲区大小?有没有命令可以看到它?

sockets linux buffer

56
推荐指数
3
解决办法
13万
查看次数

如何获取UDP套接字的排队数据量?

为了了解我在处理传入数据方面做得如何,我想测量TCP和UDP套接字的队列长度.

我知道我可以通过SO_RCVBUFsocket选项获取队列大小,并ioctl(<sockfd>, SIOCINQ, &<some_int>)告诉我TCP套接字的信息.但对于UDP,SIOCINQ/ FIONREADioctl仅返回下一个待处理数据报的大小.有没有办法如何获得UDP的队列大小,而不必解析系统表,如/proc/net/udp?

sockets linux udp

15
推荐指数
2
解决办法
1万
查看次数

UDP sendto()和recvfrom()最大缓冲区大小

我知道我可以使用这些函数的默认最大缓冲区大小是65507(5535 - IPv4标头 - UDP标头).但是,有没有办法改变这个?我需要能够发送更大的缓冲区~66000字节.我尝试使用setsockopt()函数,但似乎没有用.

谢谢!

c c++

12
推荐指数
3
解决办法
2万
查看次数

如何在 C 中刷新 UDP 套接字的输入缓冲区?

如何在 C 中刷新 UDP 套接字的输入缓冲区(如果存在这种情况)?

我正在嵌入式 Linux 环境中工作,并使用 C 来创建一些本机应用程序。在同一个网络上有几台这样的嵌入式机器,当其中一台发生事件时(我们称之为吹哨人),吹哨人应该向网络广播地址发送网络消息,以便所有机器在网络(包括 WHISTLE-BLOWER)知道该事件并根据它执行一些操作。顺便说一下,我正在使用UDP套接字...

这是它的伪代码:

main
{
    startNetworkListenerThread( networkListenerFunction );

    while( not received any SIGTERM or such )
    {
        localEventInfo = checkIfTheLocalEventOccured();
        broadcastOnNetwork( localEventInfo );
    }
}

networkListenerFunction
{
    bindSocket;

    while( not SIGTERM )
    {
// THIS IS WHERE I WANT TO FLUSH THE RECV BUFFER...
        recv_data = recvfrom( socket );
        if( validate recv data )
        {
            startExecuteLocalAction;
            sleep( 5 );
            stopExecuteLocalAction;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我期望并希望使用此代码的方式是:

1. LOCAL_EVENT occured
2. …
Run Code Online (Sandbox Code Playgroud)

c sockets embedded udp

5
推荐指数
1
解决办法
3万
查看次数

在多个线程中从同一个 UDP 套接字发送

我有多个线程需要将UDP数据包发送到不同的IP地址(仅发送,不需要接收任何内容)。我可以在所有线程中重复使用相同的 UDP 套接字吗?

sockets linux udp

5
推荐指数
1
解决办法
3176
查看次数

标签 统计

sockets ×4

linux ×3

udp ×3

c ×2

buffer ×1

c++ ×1

embedded ×1