-
중간 과제) socket 프로그래밍네트워크 2021. 5. 15. 01:02반응형
한양대 이석복 교수님의 커리큘럼에 따라 중간고사 시기에 맞추어 중간 과제를 수행하여 포스트한다.
중간고사 까지의 내용 정리 포스트는 이전에 업로드된 포스트들로 대체하며 별도의 추가 포스트는 하지 않음.Layer : App (2주) - Transport (3주) 중간고사 - Network - Link - Physical ...
출처: https://ingyeoking13.tistory.com/266 [welcome!]````
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <string.h> #include <sys/types.h> #include <netinet/in.h> #include <sys/socket.h> #include <sys/wait.h> #include <arpa/inet.h> #include <signal.h> #define PORT 3003 #define BACKLOG 10 /* how many pending connection queue will hold */ void cleanExit(int o){ exit(0); }; int main() { signal(SIGTERM, cleanExit); signal(SIGINT, cleanExit); int sockfd, newfd; /* listen on sockfd, new connection on newfd */ struct sockaddr_in serverAddr; /* my addr */ struct sockaddr_in clientAddr; /* client addr */ // socket() if ((sockfd = socket(PF_INET, SOCK_STREAM, 0))== -1) { perror("socket"); exit(1); } serverAddr.sin_family = AF_INET; serverAddr.sin_port = htons(PORT); /* INADDR_ANY allows clients to connect to any one of the host's IP address */ serverAddr.sin_addr.s_addr = htonl(INADDR_ANY); // bind() if (bind(sockfd, (struct sockaddr *)&serverAddr, sizeof(struct sockaddr)) == -1) { perror("bind"); exit(1); }; if (listen(sockfd, BACKLOG) == -1) { perror("listen"); exit(1); } while(1) { socklen_t sz = sizeof(struct sockaddr_in); if ((newfd = accept(sockfd, (struct sockaddr*)&clientAddr, &sz)) ==-1) { perror("accept"); continue; } printf("server: got connection from %s\n", inet_ntoa(clientAddr.sin_addr)); const char *header = "HTTP/1.0 200 OK\r\n\r\nHELLO"; char readbuf[10000]; int n; while((n=read(newfd, readbuf, sizeof(readbuf))) > 0) { printf("reading.... : %d\n", n); if (readbuf[n-1]=='\n') break; memset(readbuf, 0, sizeof(readbuf)); }; printf("server: got read from %s\n", inet_ntoa(clientAddr.sin_addr)); printf("data:%s\n", readbuf); write(newfd, header, strlen(header)); close(newfd); printf("closed\n"); } }
반응형'네트워크' 카테고리의 다른 글
인강) 네트워크 계층 (0) 2021.08.17 HTTP 정리 (0) 2021.06.17 중간 과제) socket 프로그래밍 (0) 2021.05.15 인강 ) 전송계층(3) - TCP(2) (0) 2021.05.05 인강 ) 전송계층(2) - TCP (0) 2021.05.04 인강 2) 애플리케이션 계층(완), 전송 계층(1) (0) 2021.04.17