CÁC BÀI THỰC HÀNH LINUX - Trang 38

- 37-

printf("%s: sending data to '%s' (IP : %s) \n", argv[0], h->h_name,

inet_ntoa(*(struct in_addr *)h->h_addr_list[0]));


remoteServAddr.sin_family = h->h_addrtype;

memcpy((char *) &remoteServAddr.sin_addr.s_addr,

h->h_addr_list[0], h->h_length);

remoteServAddr.sin_port = htons(REMOTE_SERVER_PORT);

/* socket creation */
sd = socket(AF_INET,SOCK_DGRAM,0);

if(sd<0) {
printf("%s: cannot open socket \n",argv[0]);

exit(1);
}


/* bind any port */

cliAddr.sin_family = AF_INET;
cliAddr.sin_addr.s_addr = htonl(INADDR_ANY);

cliAddr.sin_port = htons(0);

rc = bind(sd, (struct sockaddr *) &cliAddr, sizeof(cliAddr));
if(rc<0) {

printf("%s: cannot bind port\n", argv[0]);
exit(1);

}


/* send data */

for(i=2;i<argc;i++) {
rc = sendto(sd, argv[i], strlen(argv[i])+1, 0,

(struct sockaddr *) &remoteServAddr,

sizeof(remoteServAddr));


if(rc<0) {

printf("%s: cannot send data %d \n",argv[0],i-1);
close(sd);

exit(1);
}


}


return 1;


}

Chương trình udpServer.c


/* udpServer.c */


#include <sys/types.h>

#include <sys/socket.h>
#include <netinet/in.h>

#include <arpa/inet.h>
#include <netdb.h>

#include <stdio.h>
#include <unistd.h> /* close() */

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.