这是我创建客户端的函数
void registerCalledOnClient(char* ip, struct sockaddr_in& remoteServer, int remotePort){
int success, sockfd;
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) <0){
perror("Client socket failed: ");
exit(11);
}
remoteServer.sin_family = AF_INET;
remoteServer.sin_port = htons(remotePort);
remoteServer.sin_addr.s_addr = inet_addr(ip);
if((success = connect(sockfd, (struct sockaddr*)&remoteServer, sizeof(sockaddr_in))) < 0){
perror("client connection failed: ")
exit(12);
}
}
这是 header 签名
void registerCalledOnClient(char* ip, struct sockaddr_in, int remotePort);
这就是我根据用户输入调用它的方式
outgoingIp = strtok(NULL, " ");
remotePort = atoi(strtok(NULL, " "));
struct sockaddr_in remoteServer;
registerCalledOnClient(outgoingIp, remoteServer, remotePort);
这是我得到的错误,我似乎无法弄清楚
src/utilities.c:83:57: error: expected ')'
void registerCalledOnClient(char* ip, struct sockaddr_in& remoteServer, int remotePort){
^
src/utilities.c:83:28: note: to match this '('
void registerCalledOnClient(char* ip, struct sockaddr_in& remoteServer, int remotePort){
^
src/utilities.c:83:57: error: parameter name omitted
void registerCalledOnClient(char* ip, struct sockaddr_in& remoteServer, int remotePort){
src/utilities.c:90:2: error: use of undeclared identifier 'remoteServer'
remoteServer.sin_family = AF_INET;
^
src/utilities.c:91:2: error: use of undeclared identifier 'remoteServer'
remoteServer.sin_port = htons(remotePort);
^
src/utilities.c:91:32: error: use of undeclared identifier 'remotePort'
remoteServer.sin_port = htons(remotePort);
我对 C 语言不太流利。感谢任何帮助。
最佳答案
这个:
struct sockaddr_in& remoteServer
不是 C 语法,它看起来像 C++,其中使用 &
符号来声明引用。 C 没有引用;您必须按值传递结构或使用指针。
关于用C创建客户端时出现编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33191434/