如何通过UDP范围发送整数?(C语言)
客户端代码:如何通过UDP范围发送整数?(C语言),c,sockets,network-programming,C,Sockets,Network Programming,客户端代码: 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("sock
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, 0, sizeof(servaddr));
// Filling server information
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, &ch, sizeof(ch), 0, (struct sockaddr*)&servaddr, sizeof(servaddr));
在服务器上,类似地使用recvfrom()
nread = recvfrom(sockfd, &ch, sizeof(ch), 0, (struct sockaddr*)&clientaddr, &clientaddr_len);
您将许多参数传递给许多函数,但在其他任何地方都不会使用类型作为参数的前缀。为什么您认为需要为特定的函数参数执行此操作?“但是,您需要使用
sendto()
而不是send()
”——除非您事先调用了connect()
。您可以connect()
将UDP套接字连接到对等方sockaddr
,然后可以使用send()
/recv()
而不是sendto()
/recvfrom()
。
nread = recvfrom(sockfd, &ch, sizeof(ch), 0, (struct sockaddr*)&clientaddr, &clientaddr_len);