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

- 33-

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

printf("%s: cannot bind port TCP %u\n",argv[0],SERVER_PORT);
perror("error ");

exit(1);
}

/* Thực hiện kết nối đến server theo tên/địa chỉ nhập vào từ dòng lệnh */


rc = connect(sd, (struct sockaddr *) &servAddr, sizeof(servAddr));

if(rc<0) {
perror("cannot connect ");

exit(1);
}


/* Sau khi socket đã kết nối, thực hiện gửi các dữ liệu đến chương trình Server */


for(i=2;i<argc;i++) {


rc = send(sd, argv[i], strlen(argv[i]) + 1, 0);


if(rc<0) {

perror("cannot send data ");
close(sd);

exit(1);

}/* if */
printf("%s: data%u sent (%s)\n",argv[0],i-1,argv[i]);


}/* for */

return 0;
}/*main*/

Chương trình tcpServer.c

/* Chuong trinh tcpServer.c */

/* Khai báo các file thư viện cần thiết để gọi hàm socket*/
#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 */


#define SUCCESS 0
#define ERROR 1


#define END_LINE 0x0

#define SERVER_PORT 1500
#define MAX_MSG 100


/* function readline */

int read_line();