簡體   English   中英

(如何)我可以從套接字描述符中找到套接字類型嗎?

[英](How) Can I find the socket type from the socket descriptor?

我正在編寫一個程序來捕獲套接字網絡流以顯示網絡活動。 為此,我想知道是否有任何方法可以從套接字描述符中確定套接字類型。

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

例如,我想查找此套接字是否作為UDP或TCP打開。 感謝提前的任何建議。

YEH

既然你提到了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()sys / socket.h的POSIX.1文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM