struct hostent *lh = gethostbyname(hostname);
int socketDescriptor = socket(AF_INET,SOCK_STREAM, 0);
sockaddr_in socketInfo;
memset(&socketInfo, 0, sizeof(socketInfo));
socketInfo.sin_family = AF_INET;
socketInfo.sin_addr.s_addr = ((in_addr *)(lh->h_addr))->s_addr;
socketInfo.sin_port = htons(portNumber);
connect(socketDescriptor,&socketInfo,sizeof(socketInfo));
Run Code Online (Sandbox Code Playgroud)
在尝试编译时,我收到以下错误:
error: cannot convert ‘sockaddr_in*’ to ‘const sockaddr*’ for argument ‘2’ to ‘int connect(int, const sockaddr*, socklen_t)’
事情看起来"按书",但我遗漏了一些东西(显然).它是什么?
cni*_*tar 12
我想你错过struct了sockaddr_in socketInfo.所以它应该是struct sockaddr_in socketInfo.
也铸造socketInfo到struct sockaddr *就好了.
connect(socketDescriptor,&socketInfo,sizeof(socketInfo));
Run Code Online (Sandbox Code Playgroud)
应该
connect(socketDescriptor,(struct sockaddr *) &socketInfo,sizeof(socketInfo));
Run Code Online (Sandbox Code Playgroud)