gpt4 book ai didi

c - (如何)我可以从套接字描述符中找到套接字类型吗?

转载 作者:太空狗 更新时间:2023-10-29 16:43:38 25 4
gpt4 key购买 nike

我正在编写一个程序来捕获套接字网络流量以显示网络事件。为此,我想知道是否有任何方法可以从套接字描述符确定套接字类型。

我知道我可以使用 getsockname 找到套接字系列,但我找不到找到套接字类型的方法。

例如,我想知道这个套接字是作为 UDP 还是 TCP 打开的。感谢您提前提出任何建议。

是的

最佳答案

既然你提到了 getsockname,我假设你在谈论 POSIX 套接字。

您可以通过使用SO_TYPE 调用getsockopt 函数来获取套接字类型。例如:

#include <stdio.h>
#include <sys/socket.h>

void main (void) {
int fd = socket( AF_INET, SOCK_STREAM, 0 );
int type;
int length = sizeof( int );

getsockopt( fd, SOL_SOCKET, SO_TYPE, &type, &length );

if (type == SOCK_STREAM) puts( "It's a TCP socket." );
else puts ("Wait... what happened?");
}

请注意,我的示例没有进行任何错误检查。你应该在使用它之前修复它。有关详细信息,请参阅 getsockopt() 的 POSIX.1 文档和 sys/socket.h .

关于c - (如何)我可以从套接字描述符中找到套接字类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3217650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com