如何通过UDP scoket发送整数?C语言

问题描述

客户端代码

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);