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

- 36-

/* end of line but still some data in buffer => return line */
if(rcv_ptr <n-1) {

/* set last byte to END_LINE */
*(line_to_return+offset)=END_LINE;

rcv_ptr++;
return ++offset;

}

/* end of buffer but line is not ended => */
/* wait for more data to arrive on socket */

if(rcv_ptr == n) {
rcv_ptr = 0;

}

} /* while */
}/*main*/


9.2. Lập trình client /server theo giao thức UDP/IP

Chương trình udpClient.c

/* udpClient.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>
#include <string.h>

/* memset() */

#include <sys/time.h>

/* select() */

#define REMOTE_SERVER_PORT 1500
#define MAX_MSG 100


int main(int argc, char *argv[]) {

int sd, rc, i;
struct sockaddr_in cliAddr, remoteServAddr;

struct hostent *h;

/* check command line args */
if(argc<3) {

printf("usage : %s <server> <data1> ... <dataN> \n", argv[0]);
exit(1);

}

/* get server IP address (no check if input is IP address or DNS name */
h = gethostbyname(argv[1]);

if(h==NULL) {
printf("%s: unknown host '%s' \n", argv[0], argv[1]);

exit(1);
}

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.