网络编程之路---7

来源:互联网 发布:义乌有没有淘宝培训 编辑:程序博客网 时间:2024/06/11 07:29

int getsockopt(SOCKET s, int level, int optname, char *optbal, int *optlen);

sockt描述符 选项所在的协议层 需要访问的选项名 返回选项值的缓冲 作为入口参数时,选项值的最大长度,作为出口参数时,选项值的实际长度

#include <stdlib.h>#include <stdio.h>#include <WinSock2.h>#pragma comment(lib, "WS2_32.lib")int main(int argc, char *argv[]){WSADATA wsaData;int resValue; //函数返回值, 用来查看各个函数的执行情况resValue = WSAStartup(MAKEWORD(2,2), &wsaData);if (resValue != NO_ERROR){printf("Error at WSAstartup\n");}SOCKET listenSocket; //创建用于监听的套接字listenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (listenSocket == INVALID_SOCKET){printf("Error at socket()\n");WSACleanup();return -1;}u_short Port = 27015;SOCKADDR_IN servAddr; //服务器地址servAddr.sin_family = AF_INET;servAddr.sin_port = htons(Port);hostent* thisHost;thisHost = gethostbyname("");//hostent{主机的规范名 主机的别名 主机的ip地址的类型 主机ip的地址长度 主机的ip地址(网络字节顺序)}char *ip = inet_ntoa(*(struct in_addr*)*thisHost->h_addr_list);servAddr.sin_addr.S_un.S_addr = inet_addr(ip);if (bind(listenSocket, (const SOCKADDR*)&servAddr, sizeof(servAddr)) == SOCKET_ERROR){printf("bind error\n");closesocket(listenSocket);WSACleanup();return -1;}int isockOption;int iOptlen = sizeof(int);if (getsockopt(listenSocket, SOL_SOCKET, SO_ACCEPTCONN, (char*)&isockOption, &iOptlen) != SOCKET_ERROR){printf("SO_ACCEPTCONN Value: %ld\n", isockOption);}if (listen(listenSocket, 100) == SOCKET_ERROR){printf("Listening failed...\n");}if (getsockopt(listenSocket, SOL_SOCKET, SO_ACCEPTCONN, (char*)&isockOption, &iOptlen) != SOCKET_ERROR){printf("SO_ACCEPTCONN Value: %ld\n", isockOption);}WSACleanup();system("pause");return 0;}
int setsockopt(SOCKET s, int level, int optname, const char *optval, int optlen);

#include "winsock2.h"#include <stdio.h>#pragma comment(lib, "WS2_32.lib")int main(int argc, char *argvp[]){WSADATA wsaData;int resValue;resValue = WSAStartup(MAKEWORD(2,2), &wsaData);if (resValue != NO_ERROR){printf("WSAstart failed\n");}SOCKET ListenSocket;ListenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (ListenSocket == INVALID_SOCKET){printf("socket() failed\n");WSACleanup();return -1;}SOCKADDR_IN servAddr;u_short Port = 27015;servAddr.sin_family = AF_INET;servAddr.sin_port = htons(Port);hostent* thisHost;thisHost = gethostbyname("");char *ip = inet_ntoa(*(struct in_addr*)*thisHost->h_addr_list);servAddr.sin_addr.S_un.S_addr = inet_addr(ip);if (bind(ListenSocket, (SOCKADDR*)&servAddr, sizeof(servAddr)) == SOCKET_ERROR){printf("bind failed\n");closesocket(ListenSocket);WSACleanup();return -1;}int isockOption = 0;int iOptlen = sizeof(int);if (getsockopt(ListenSocket, SOL_SOCKET, SO_KEEPALIVE, (char *)&isockOption, &iOptlen) != SOCKET_ERROR)printf("SO_KEEPALIVE VALUE: %ld\n", isockOption);BOOL bsockOption = TRUE;int bOptlen = sizeof(BOOL);if (setsockopt(ListenSocket, SOL_SOCKET, SO_KEEPALIVE, (char *)&bsockOption, bOptlen) != SOCKET_ERROR){printf("set SO_KEEPALIVE : ON\n");}if (getsockopt(ListenSocket, SOL_SOCKET, SO_KEEPALIVE, (char *)&isockOption, &iOptlen) != SOCKET_ERROR)printf("SO_KEEPALIVE VALUE: %ld\n", isockOption);WSACleanup();system("pause");return 0;}



0 0
原创粉丝点击