일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프론트엔드 개발자
- 오버워치
- 빅엔디언
- 구조체
- 재밌는 모바일게임
- c언어 알고리즘
- react native
- 덧셈
- 리틀엔디언
- UDP daytime
- 네트워크 관리사 2급 필기
- 안드로이드 백도어
- 배열 정렬
- sa 계정 비밀번호 변경
- 프로그래밍 언어론
- 리버싱
- 레나 리버싱
- 메이플스토리 M 사전예약
- C언어
- abex crack me 1번
- 구조체 함수
- 알고리즘
- abex crack me 5번문제
- 배열
- Reverse Me
- 마인크래프트
- abex crack me 2번 문제풀이
- 암호화폐
- 1.9.2
- 배열 탐색
- Today
- Total
Gyejoong's Information
서버 공용코드 (daytime,qotd,echo,finger) 본문
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
void err_quit(const char *message);
void err_sys(const char *message);
#define MAXLINE 4096
int main(int argc, char *argv[])
{
// listen할 소켓 생성
int listenfd;
if( (listenfd = socket((AF_INET, SOCK_STREAM,0)) < 0)
err_sys("socket error");
// 서버주소와 소켓을 연결(bind)
struct sockaddr_in servaddr;
memset(&servaddr,0,sizeof(servaddr);
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(7,13,17,79); // echo,daytime,qotd,finger 순으로 포트번호설정.
servaddr.sin_addr.s_addr = htonl(INADDR_ANY); // 호스트주소를 네트워크주소로 long형으로 변환
if (bind(listenfd,(struct sockaddr*)&servaddr,sizeof(servaddr)) < 0)
err_sys("bind error");
// 소켓을 리슨 소켓으로 변경 (listen)
if(listen(listenfd,SOMAXCONN) < 0)
err_sys("listen error");
for ( ; ;) {
// 클라이언트 접속 및 대기처리 (accept)
int connfd;
struct sockaddr_in cliaddr; // 클라이언트의 주소
socklen_t len = sizeof(cliaddr);
if ( (connfd = accpet(listenfd,(struct sockaddr*)&cliaddr,&len)) < 0)
err_sys("accept error");
// 접속한 클라이언트의 정보를 화면에 출력
char cliname[INET_ADDRSTRLEN];
if ( inet_ntop(AF_INET,&cliaddr.sin_addr,cliname,sizeof(cliname)) )
printf("Handling client %s:%d\n",cliname, ntohs(cliaddr.sin_port));
else
err_sys("inet_ntop 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.10.05 |
---|---|
클라이언트 공용코드(daytime,qotd,echo,finger) (0) | 2016.09.30 |
TCP IP 소켓프로그래밍 소스코드(daytime,qotd,echo,finger) (0) | 2016.09.28 |