일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- UDP daytime
- 프론트엔드 개발자
- sa 계정 비밀번호 변경
- abex crack me 5번문제
- 1.9.2
- 빅엔디언
- 구조체
- 배열 정렬
- abex crack me 2번 문제풀이
- 리틀엔디언
- 알고리즘
- 마인크래프트
- 안드로이드 백도어
- 배열
- 오버워치
- C언어
- Reverse Me
- 암호화폐
- abex crack me 1번
- 프로그래밍 언어론
- react native
- 메이플스토리 M 사전예약
- 구조체 함수
- 재밌는 모바일게임
- 레나 리버싱
- 덧셈
- 배열 탐색
- c언어 알고리즘
- 리버싱
- 네트워크 관리사 2급 필기
- Today
- Total
Gyejoong's Information
daytime서버 코딩 본문
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <time.h>
#define MAXLINE 4096
void err_quit(const char *message);
void err_sys(const char *message);
int main(int argc, char *argv[]){
// 1. socket
int listenfd;
if ( ( listenfd = socket(AF_INET,SOCK_STREAM,0)) < 0)
err_sys("socket error");
// 2. bind
struct sockaddr_in servaddr;
memset(&servaddr,0,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(13);
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
if (bind(listenfd,(struct sockaddr*)&servaddr,sizeof(servaddr)) < 0)
err_sys("bind error");
// 3. listen
if(listen(listenfd,SOMAXCONN) < 0)
err_sys("listen error");
for( ; ; ) {
// 4. accept
int connfd;
struct sockaddr_in cliaddr;
socklen_t len = sizeof(cliaddr);
if ( (connfd = accept(listenfd,(struct sockaddr*)&cliaddr,&len)) < 0)
err_sys("accept error");
// 5. inet_ntop
char cliname[ADDRSTRLEN];
if (inet_ntop(AF_INET,&cliaddr.sin_addr,cliname,sizeof(cliname)) < 0)
printf("Handling client %s:%d\n",cliname,ntohs(cliaddr.sin_port));
else
err_sys("inet_ntop error");
// 6. write
time_t ticks = time(NULL);
char buff[MAXLINE];
snprintf(buff,sizeof(buff),"%.24s\r\n",ctime(&ticks));
if(write(connfd,buff,strlen(buff)) < 0)
err_sys("write error");
close(connfd);
}
}
void err_quit(const char *message){
fputs(message,stderr);
fputc('\n',stderr);
exit(1);
}
void err_sys(const char *message){
perror(message);
exit(1);
}
'Study > Socket programming' 카테고리의 다른 글
클라이언트 공용코드(daytime,qotd,echo,finger) (0) | 2016.09.30 |
---|---|
TCP IP 소켓프로그래밍 소스코드(daytime,qotd,echo,finger) (0) | 2016.09.28 |
Socket Programming 정리 (0) | 2016.09.28 |