티스토리 뷰
반응형
한양대 이석복 교수님의 커리큘럼에 따라 중간고사 시기에 맞추어 중간 과제를 수행하여 포스트한다.
중간고사 까지의 내용 정리 포스트는 이전에 업로드된 포스트들로 대체하며 별도의 추가 포스트는 하지 않음.
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 |
인강 ) 전송계층(3) - TCP(2) (0) | 2021.05.05 |
인강 ) 전송계층(2) - TCP (0) | 2021.05.04 |
인강 2) 애플리케이션 계층(완), 전송 계층(1) (0) | 2021.04.17 |
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- rosen
- 데이터 중심 애플리케이션 설계
- javascript
- 그라파나
- 시뮬레이션
- 로젠
- 이산수학
- 아레나시뮬레이션
- arena simulation
- Grafana
- Discrete Mathematics
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- 대규모 시스템 설계 기초
- 아레나
- 명제논리
- Arena
- beginning javascript
- 자바스크립트 예제
- 백준
- 자바스크립트
- 항해99
- grafana cloud
- 아레나 시뮬레이션
- 엄청난 인내심과 시뮬레이션을 위한 아레나 툴
- Propositional and Predicate Logic
- 이산 수학
- flutter
- paul wilton
- 최단경로 알고리즘
- Simulation
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함