套接字入门(孙鑫教学视频)问题.
#include<WinSock2.h>
#include<iostream>
using namespace std;
#pragma comment(lib,"ws2_32.lib" )
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested=MAKEWORD(1,1);
err=WSAStartup(wVersionRequested,&wsaData);
if(err!=0)
{
return;
}
if(LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData.wVersion)!=1)
{
return;
}
SOCKET socksrv=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addSrv;
addSrv.sin_addr.S_un.S_addr.S_addr=htonl(INADDR_ANY);
addSrv.sin_family=AF_INET;
addSrv.sin_port=htons(6000);
bind(socksrv,(SOCKADDR*)&addSrv,sizeof(SOCKADDR));
listen(socksrv,5);
SOCKADDR_IN addrclient;
int len=sizeof(SOCKADDR);
while(1)
{
SOCKET sockConn=accept(socksrv,(SOCKADDR*)&addrclient,&len);
char sendBuff[100];
sprintf(sendBuff,"welcome lq",inet_ntoa(addrclient.sin_addr));
send(sockConn,sendBuff,strlen(sendBuff)+1,0);
char recvbuff[100];
recv(sockConn,recvbuff,100,0);
printf("%s\n",recvbuff);
closesocket(sockConn);
}
}
我输入了同样的代码,怎么过不了编译。
error C2228: “.S_addr”的左边必须有类/结构/联合
socket 视频 c++
[解决办法]
addSrv.sin_addr.S_un.S_addr.S_addr=htonl(INADDR_ANY);
==>
addSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
[解决办法]
addSrv.sin_addr.S_un.S_addr.S_addr
最后面多写了个S_addr