- Linux의 Echo Server에 접속할 Client이다.
- 항상 Server가 먼저 실행된 상태에서 접속해야한다.
- vi editor로 작성한 다음 아래의 code를 입력한 뒤 저장해 Client 소스 파일을 만든다.
- gcc를 이용해 Client 소스 파일을 컴파일 하고, Server가 실행된 상태에서 Client를 실행한다.
- ex) vi Client.c
- source code 입력 후 Shift + Z + Z로 저장.
- gcc Client.c -o Client.out
아래는 입력할 source code이다.
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#define BUF_LEN 80
int main(int argc, char* argv[]){
int skt, n, len_in, len_out;
struct sockaddr_in server_addr;
char* host_addr;
char buf[BUF_LEN+1];
if(argc != 3){
printf("사용법 : %s ip_address\n", argv[0]);
return -1;
}
host_addr = argv[1];
if(skt = socket(PF_INET, SOCK_STREAM, 0) < 0){
printf("소켓 생성실패\n");
return -1;
}
bzero((char *)&server_addr, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = inet_addr(host_addr);
server_addr.sin_port = htons(atoi(argv[2]));
if(connect(skt, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0){
printf("연결 실패\n");
return -1;
}
printf("문자열을 입력하시오: ");
if(fgets(buf, BUF_LEN, stdin)){
buf[BUF_LEN] = '\0';
len_out = strlen(buf);
}
else{
printf("오류\n");
return -1;
}
write(skt, buf, 80);
printf("서버로부터 되돌아 온 문장: ");
for(len_in = 0, n = 0; len_in < len_out; len_in += n){
if((n = read(skt, &buf[len_in], len_out - len_in))<0){
printf("read 오류\n");
return -1;
}
}
printf("%s", buf);
close(skt);
return 0;
}
'공부 해 Boa요. > Network' 카테고리의 다른 글
동시형 서버 (0) | 2006.10.27 |
---|---|
Raw Socket (0) | 2006.09.29 |
Consol Echo Client (0) | 2006.09.27 |
실전 네트웍 프로그래밍 - 4 - IOCP Echo Server (0) | 2005.06.29 |
'실전 네트웍 프로그래밍 -3 (0) | 2005.06.29 |