[英](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.