목차
1. 문제 정의
2. 문제 분석
3. 디자인(구현 부분)
4. 결과 화면
5. 소스 코드
2. 문제 분석
3. 디자인(구현 부분)
4. 결과 화면
5. 소스 코드
본문내용
1. 문제 정의
구조체를 사용하여 client에서 데이터를 보내고 server 쪽에서는 받은 데이터에 대해 데이터에 맞는 처리를 하여 response를 하도록 한다.
사용되는 구조체는 다음과 같다.
client가 보내는 메시지 형태
typedef struct
{
int seq_num//sequence number
u_int32_t srcaddr; //보내는 컴퓨터의 IP address
u_int32_t dstaddr; //받는 컴퓨터 IP address
int port; //port number
}request_packet
server가 보내는 메시지 형태
typedef struct
{
int seq_num//sequence number
char name[30] // 이름 필드.
}response_packet
<동작 과정>
1. client가 메시지를 보냈을 경우 server 쪽에서는 name을 입력을 하여(scanf(),fgets(),gets() 등등 사용) client에게 응답한다. server에서는 구조체의 request_packet구조체의 필드들을 출력하도록 해야한다.
2. client에서는 구조체의 response_packet구조체의 필드들을 출력한다.(IP,PORT제외)
분석
client 부분에서
request.dstaddr=inet_addr(SERVERIP);
request.srcaddr=inet_addr(CLIENTIP);
send(client_fd,&request,sizeof(request),0);
와 같이 변환하여 request 구조체의 dstaddr과 srcaddr 멤버에 넣어 server에 보낸다.
server 부분에서는
recv(client_fd, &request, sizeof(request),0);
inaddr1.s_addr=request.srcaddr;
inaddr2.s_addr=request.dstaddr;
printf("Client IP Address : %s\n", inet_ntoa(inaddr1));
printf("Server IP Address : %s\n", inet_ntoa(inaddr2));
와 같이 받은 이진 비트로 변환된 IP 주소를 inaddr1의 멤버 s_addr에 저장했다가
inet_ntoa(inaddr1) 처럼 스트링으로 변환하여 출력한다.
본 자료는 1개의 hwp자료와 소스코드로 구성되었습니다.
구조체를 사용하여 client에서 데이터를 보내고 server 쪽에서는 받은 데이터에 대해 데이터에 맞는 처리를 하여 response를 하도록 한다.
사용되는 구조체는 다음과 같다.
client가 보내는 메시지 형태
typedef struct
{
int seq_num//sequence number
u_int32_t srcaddr; //보내는 컴퓨터의 IP address
u_int32_t dstaddr; //받는 컴퓨터 IP address
int port; //port number
}request_packet
server가 보내는 메시지 형태
typedef struct
{
int seq_num//sequence number
char name[30] // 이름 필드.
}response_packet
<동작 과정>
1. client가 메시지를 보냈을 경우 server 쪽에서는 name을 입력을 하여(scanf(),fgets(),gets() 등등 사용) client에게 응답한다. server에서는 구조체의 request_packet구조체의 필드들을 출력하도록 해야한다.
2. client에서는 구조체의 response_packet구조체의 필드들을 출력한다.(IP,PORT제외)
분석
client 부분에서
request.dstaddr=inet_addr(SERVERIP);
request.srcaddr=inet_addr(CLIENTIP);
send(client_fd,&request,sizeof(request),0);
와 같이 변환하여 request 구조체의 dstaddr과 srcaddr 멤버에 넣어 server에 보낸다.
server 부분에서는
recv(client_fd, &request, sizeof(request),0);
inaddr1.s_addr=request.srcaddr;
inaddr2.s_addr=request.dstaddr;
printf("Client IP Address : %s\n", inet_ntoa(inaddr1));
printf("Server IP Address : %s\n", inet_ntoa(inaddr2));
와 같이 받은 이진 비트로 변환된 IP 주소를 inaddr1의 멤버 s_addr에 저장했다가
inet_ntoa(inaddr1) 처럼 스트링으로 변환하여 출력한다.
본 자료는 1개의 hwp자료와 소스코드로 구성되었습니다.
소개글