홍릉과학출판사 컴퓨터 네트워크 프로그래밍 2장 연습문제 완벽풀이
- 최초 등록일
- 2008.04.15
- 최종 저작일
- 2008.04
- 7페이지/ 한컴오피스
- 가격 1,500원
소개글
기존에 인터넷에 돌아다니고 해피캠퍼스에 올라와 있는 동일 자료와 비교를 거부합니다.
마지막 한문제까지 완벽하게 풀이되어있습니다.
목차
1번~6번까지 소스 코드와 실행 화면으로 구성.
본문내용
7) close()로 UDP 소켓 닫기
<소스 코드>
#include
#include
#include
#include
#include
#include
#include
#include
#define MAXLINE 511
int main(int argc, char *argv[]) {
struct sockaddr_in servaddr;
int s, nbyte, addrlen = sizeof(servaddr);
char buf[MAXLINE+1];
if(argc != 3) {
printf("usage: %s ip_address port_numbern", argv[0]);
exit(0);
}
// 1) UDP 소켓 개설
if((s = socket(PF_INET, SOCK_DGRAM, 0)) < 0) {
perror("socket fail");
exit(0);
}
// 2) 서버 소켓주소 구조체 작성
bzero((char *)&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = inet_addr(argv[1]);
servaddr.sin_port = htons(atoi(argv[2]));
// 3) 서버 소켓주소를 인자로 하여 connect() 호출연결 요청
if(connect(s, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0){
perror("connect fail");
exit(0);
}
// 키보드 입력을 받음
printf("입력 : ");
if (fgets(buf, MAXLINE , stdin)==NULL) {
printf("fgets 실패");
exit(0);
}
// 4) write() 또는 send()로 에코 메시지 전달
if(write(s, buf ,strlen(buf)) < 0 ){
printf("write errorn");
exit(0);
}
// 수신된 에코 메시지
printf("수신 : ");
// 5) read() 또는 recv()로 에코 메시지 수신
if( (nbyte = read(s, buf, MAXLINE)) < 0){
perror("read fail");
exit(0);
}
// 6) 연결된 UDP 종료
servaddr.sin_family = AF_UNSPEC;
if(connect(s, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0){
perror("connect fail");
exit(0);
}
buf[ nbyte ]=0;
printf("%sn", buf);
// 7) close()로 UDP 소켓 닫기
close(s);
return 0;
}
<실행 화면>
- udp echo server 실행
- connected udp 실행
참고 자료
없음