利用getsockopt读取套接字可选项

//利用getsockopt读取套接字可选项,用协议层为SQL_SOCKET,名为SO_TYPE的可选项查看套接字类型(TCP,UDP);

//sock_type.c

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/socket.h>
#include <string.h>
void error_handling(char*message);

int main(int argc, char *argv[])
{
int tcp_sock,udp_sock;
int sock_type;
socklen_t optlen;
int state;

optlen=sizeof(sock_type);
tcp_sock=socket(PF_INET,SOCK_STREAM,0);
udp_sock=socket(PF_INET,SOCK_DGRAM,0);
printf("SOCK_STREAM:%d\n",SOCK_STREAM);
printf("SOCK_DGRAM:%d\n",SOCK_DGRAM);

state=getsockopt(tcp_sock,SOL_SOCKET,SO_TYPE,(void*)&sock_type,&optlen);
if(state)
{
error_handling("getsockopt() error!");
}
printf("Socket type one:%d\n",sock_type);

state=getsockopt(udp_sock,SOL_SOCKET,SO_TYPE,SO_TYPE,(void*)&sock_type,&optlen);
if(state)
{
error_handling("getsockopt() error!");
}
printf("Socket type two:%d\n",sock_type);
return 0;
}

void error_handling(char*message)
{
fputs(message,stderr);
fputc('\n',stderr);
exit(1);
}

 

posted @ 2021-02-08 12:00  诗和远方*  阅读(286)  评论(0编辑  收藏  举报