Это код, который я использовал для передачи данных по сети UDP
// server program for udp connection
#include <stdio.h>
#include <strings.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#define PORT xxxx
#define MAXLINE 1000
// Driver code
int main()
{
char buffer[100];
char *message = "Hello Client";
int listenfd, len;
struct sockaddr_in servaddr, cliaddr;
bzero(&servaddr, sizeof(servaddr));
// Create a UDP Socket
listenfd = socket(AF_INET, SOCK_DGRAM, 0);
servaddr.sin_addr.s_addr = inet_addr("192.168.xx.xx"); //htonl(INADDR_ANY);
servaddr.sin_port = htons(PORT);
servaddr.sin_family = AF_INET;
// bind server address to socket descriptor
bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr));
//receive the datagram
while(1){
len = sizeof(cliaddr);
int n = recvfrom(listenfd, buffer, sizeof(buffer),
0, (struct sockaddr*)&cliaddr,&len); //receive message from server
buffer[n] = '\0';
puts(buffer);
// send the response
sendto(listenfd, message, strlen(message), 0,
(struct sockaddr*)&cliaddr, sizeof(cliaddr));
}
}
Это мой код, который отлично работает с функциями recvfrom
и sendto
. но когда я пытаюсь выполнить только sendto
функцию только для отправки данных по сети UDP. Он перестает работать
while(1){
len = sizeof(cliaddr);
/*int n = recvfrom(listenfd, buffer, sizeof(buffer),
0, (struct sockaddr*)&cliaddr,&len); //receive message from server
buffer[n] = '\0';
puts(buffer);*/
// send the response
sendto(listenfd, message, strlen(message), 0,
(struct sockaddr*)&cliaddr, sizeof(cliaddr));
}
после этого моя сеть перестает отправлять данные на клиентское устройство.
Что мне делать, чтобы решить эту проблему?
кто-нибудь, пожалуйста, помогите мне!