在C中编译套接字连接代码时出现问题

Jam*_*sev 8 c sockets

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

我想你错过structsockaddr_in socketInfo.所以它应该是struct sockaddr_in socketInfo.

也铸造socketInfostruct 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)