问题描述
客户端代码:
export_responses
在这里,我想将变量 ch 发送到服务器。 上面的客户端程序在编译时给出错误提示-
int main() {
int sockfd;
char buffer[MAXLINE];
char *msg;
struct sockaddr_in servaddr;
// Creating socket file descriptor
if ( (sockfd = socket(AF_INET,SOCK_DGRAM,0)) < 0 ) {
perror("socket creation Failed");
exit(EXIT_FAILURE);
}
memset(&servaddr,sizeof(servaddr));
// Filling server @R_750_4045@ion
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(PORT);
servaddr.sin_addr.s_addr = INADDR_ANY;
int ch,n,len;
printf("Enter '1' for Reversal of String.\n");
printf("Enter '2' for number to binary conversion. \n");
printf("Enter '3' for Echo server implementation. \n");
scanf("%d",&ch);
send(sockfd,int &ch,sizeof(ch),0);
close(sockfd);
return 0;
}
另外, i 如何在服务器中接收发送的整数?
解决方法
您不必在函数调用中放入类型声明,只需将表达式放入即可。应该是:
send(sockfd,&ch,sizeof(ch),0);
但是,由于尚未调用connect()
,因此需要使用sendto()
而不是send()
,以便可以指定服务器地址。
sendto(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr));
在服务器上,您也类似地使用recvfrom()
。
nread = recvfrom(sockfd,(struct sockaddr*)&clientaddr,&clientaddr_len);