当前位置:  开发笔记 > 程序员 > 正文

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

如何解决《(如何)我可以从套接字描述符中找到套接字类型吗?》经验,为你挑选了1个好方法。

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

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

例如,我想查找此套接字是否作为UDP或TCP打开.感谢提前的任何建议.

YEH



1> Sam Hanes..:

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

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

#include 
#include 

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()和sys/socket.h的POSIX.1文档.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有