YEH*_*YEH 11 c sockets networking
我正在编写一个程序来捕获套接字网络流以显示网络活动.为此,我想知道是否有任何方法可以从套接字描述符中确定套接字类型.
我知道我可以使用getsockname找到套接字系列,但我找不到找到套接字类型的方法.
例如,我想查找此套接字是否作为UDP或TCP打开.感谢提前的任何建议.
YEH
Sam*_*nes 19
既然你提到getsockname
我假设你在谈论POSIX套接字.
您可以通过调用getsockopt
函数来获取套接字类型SO_TYPE
.例如:
#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?");
}
Run Code Online (Sandbox Code Playgroud)
请注意,我的示例没有进行任何错误检查.你应该在使用之前解决这个问题.有关更多信息,请参阅getsockopt()和sys/socket.h的POSIX.1文档.
归档时间: |
|
查看次数: |
5307 次 |
最近记录: |