vc++中创建socket
#include <winsock2.h>
int sockfd, new_fd; //监听端口,数据端口
struct sockaddr_in my_addr;
//1.初始化socket,调用winsocek动态库,否则不能创建
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return -1;
}
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 )
{
WSACleanup( );
return -1;
}
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return -1;
}
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 )
{
WSACleanup( );
return -1;
}
//2.创建一个socket
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("Fail to create socket error.");
exit(1);
}
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("Fail to create socket error.");
exit(1);
}
//设置socket参数
setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,(char*)&yes,sizeof(int));
setsockopt(sockfd,SOL_SOCKET,SO_RCVBUF,(char*)&yes,sizeof(int));
setsockopt(sockfd,SOL_SOCKET,SO_SNDBUF,(char*)&yes,sizeof(int));
//3.绑定socket
my_addr.sin_family = AF_INET;
// Internet
协议族
my_addr.sin_port = htons(iPort); // 网络字节顺序
my_addr.sin_addr.s_addr = INADDR_ANY; // 自动填本机IP
memset(&(my_addr.sin_zero),'\0', 8);
my_addr.sin_port = htons(iPort); // 网络字节顺序
my_addr.sin_addr.s_addr = INADDR_ANY; // 自动填本机IP
memset(&(my_addr.sin_zero),'\0', 8);
bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct
sockaddr));
//4.监听端口
listen(sockfd, BACKLOG);
浙公网安备 33010602011771号