Simple Socket Server based on C

31437 
Created at 2006-09-29 06:52:09 
200   0   0   0  
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#include <sys/uio.h>
#include <unistd.h>
#include <signal.h>

/* the TCP port that is used for this example */
#define TCP_PORT   6500
#define SERV_HOST_ADDR   "127.0.0.1"

int        main()
{
        struct sockaddr_in        server;
        struct sockaddr_in        cliAddr;

        int                        sockFd;
        int                        sock;
        unsigned short                cliLen;
        int                        i;

        signal(SIGCLD, SIG_IGN);

        sockFd = socket(AF_INET, SOCK_STREAM, 0);

        if(sockFd < 0) {
                perror("opening stream socket");
                exit(1);
        }

        setsockopt(sockFd, SOL_SOCKET, SO_REUSEADDR, 0, 0);
        
        memset((char *) &server, 0, sizeof(server));
        server.sin_family = AF_INET;
        server.sin_addr.s_addr = htonl(INADDR_ANY);
        server.sin_port = htons(TCP_PORT);

        if(bind(sockFd, (struct sockaddr *) &server, sizeof server) < 0) {
                fprintf(stdout, "bind error ");
                exit(0);
        }

        listen(sockFd, 5);

        cliLen = sizeof(cliAddr);
        for(i=0; ;i++)
        {
                int        chpid;
                int        cc=0;
                int        rflag=0;
                int        wflag=0;
                char        buf[128];

                sock = accept(sockFd, (struct sockaddr *)&cliAddr, (int *)&cliLen);
                if(sock < 0) {
                        fprintf(stderr, "accept failed ");
                        exit(0);
                };

                chpid = fork();
                switch(chpid)
                {
                        case 0:
                                signal(SIGPIPE, SIG_IGN);
                                signal(SIGCLD, SIG_IGN);
                                cc = recv(sock, buf, 128, rflag);
                                if ( cc <= 0 ) {
                                        shutdown(sock, 0);
                                }
                                fprintf(stdout, "read ");
                                cc = send(sock, buf, strlen(buf), wflag);
                                if ( cc <= 0 ) {
                                        shutdown(sock, 1);
                                }
                                fprintf(stdout, "send ", cc);
                                close(sock);
                                break;
                        case -1:
                                perror("fork failed : ");
                                close(sock);
                                break;
                        default:
                                close(sock);
                                break;
                }
        }

        close(sockFd);
        exit(0);
}


Share on Facebook Share on X

◀ PREVIOUS
String Find 알고리즘
▶ NEXT
AES (Advanced Encryption Standard) Source Code
  Comments 0
Login for comment
OTHER POSTS IN THE SAME CATEGORY

OpenSSL Example PHP Code - VerifySignature (created at 2006-09-29)

WOWLINUX에서 POP3 구동시키기 (created at 2006-09-29)

메일(mail)이 보내지는건 되는데, 안받아져요 (created at 2006-09-29)

외부에서 PING 안되게 막기 (created at 2006-09-29)

IP 및 GATEWAY 설정 변경 방법 (created at 2006-09-29)

dante ~ free sock v4/v5 server for linux (created at 2006-09-29)

WOWLINUX 7.3 Paran R2 - HDD Quota 설정 (created at 2006-09-29)

SoBig.Worm Virus 퇴치 방법 (created at 2006-09-29)

터미널에서 한글이 안나오고 입력도 안되는 문제 해결 (created at 2006-09-29)

메일 수신은 되는데 발신은 안될경우 (created at 2006-09-29)

IE 쿠키 세팅하는 방법 (created at 2006-09-29)

매크로로 라이브러리 링크하는 방법 (created at 2006-09-29)

cgi File Downloading Module (created at 2006-09-29)

Check Function - Is NT/2000/XP ? (created at 2006-09-29)

AES (Advanced Encryption Standard) Source Code (created at 2006-09-29)

String Find 알고리즘 (created at 2006-09-29)

HTTP Downloading Reference Source Code (created at 2006-09-29)

UNIX에서 LOCALTIME 구하는 방법 & GetTicketCount() (created at 2006-09-29)

Application Event써서 Keyboard 받아내기 (created at 2006-09-29)

Web Browser Control에서 Enter키 먹게 하기 (created at 2006-09-29)

윈도우 찾아서 Top Most로 올려주기 (updated at 2023-12-17)

Application defined window call procedure (created at 2006-09-29)

ActiveX의 등록 - Safe Code 넣어주기 (updated at 2023-12-17)

ActiveX를 Safe한 Component로 등록하는 방법 (created at 2006-09-29)

투명 윈도우 구현 방법 (created at 2006-09-29)

웹브라우져에 붙이기 위한 ActiveX 프로그래밍 방법 (created at 2006-09-29)

how to record keyboard & mouse event (created at 2006-09-29)

스크린세이버 동작 못하게 막아주기 (created at 2006-09-29)

PC 셧다운 (shutdown) (created at 2006-09-29)

DirectShow에서 비디오 출력 크기 조정해주기 (created at 2006-09-29)

UPDATES

글루코사민 vs. 콘드로이친: 무엇이 더 나은 관절 건강 보조제일까? (created at 2024-04-22)

광주 5·18 민주화운동 알린 테리 앤더슨 前 AP 기자 (created at 2024-04-22)

햄과 소세지가 우리 몸에 일으키는 부작용 (updated at 2024-04-22)

콘드로이친의 염증 감소효과 (updated at 2024-04-22)

코사민 DS - 글루코사민+콘드로이친 복합물이 함유된 퇴행성 관절 건강보조제 (updated at 2024-04-22)

삼겹살 먹을때 환상조합 (created at 2024-04-22)

일본 여중생의 특이한 취향 (created at 2024-04-22)

우리가 먹는 약물이 바꿔버린 생태계 (created at 2024-04-21)

일본에서 그린 상상속의 사무직과 현실속의 사무직 (updated at 2024-04-21)

북한 미대생들이 그린 북한 최고존엄 김정은 (created at 2024-04-21)

입사 후 1년도 되지 않은 회사에서 구조조정에 의한 퇴직 불응에 따른 해고 처리시 대응 가능한 방법 (updated at 2024-04-20)

한고은님의 옛날 사진 (updated at 2024-04-20)

소녀대 - Bye Bye Girl (updated at 2024-04-13)

대한민국 날씨 근황 (created at 2024-04-13)

성일종 인재육성 강조하며 이토 히로부미 언급 - 인재 키운 선례? (updated at 2024-04-13)

일제강점기가 더 살기 좋았을지도 모른다는 조수연 국민의힘 후보 - 친일파? (updated at 2024-04-13)

Marshall Ha님의 샤오미 SU7 시승기 - 테슬라의 일론 머스크님이 긴장할만한 느낌 (updated at 2024-04-09)

윙크하는 귀염둥이 반려견들 (created at 2024-04-08)

달콤 살벌한 고백 (created at 2024-04-08)

북한 최정예 공수부대 훈련 모습 (updated at 2024-04-02)

맛있었던 친구 어머니의 주먹밥이 먹고 싶어요 (created at 2024-04-02)

자리 마음에 안든다고 6급 공무원 패는 농협 조합장 (created at 2024-03-26)

85세 딸 짜장면 사주는 102세 어머니 (created at 2024-03-26)

1990년대 감각파 도둑 (created at 2024-03-26)

치매에 걸린 69살의 브루스 윌리스가 전부인 데미무어를 보고 한 말 (updated at 2024-03-22)

경제는 대통령이 살리는 것이 아닙니다 라던 윤석열대통령 - 상황 안좋아지자 여러 전략을 펼쳤지만, 부작용 속출했던 2024년의 봄 (updated at 2024-03-13)

극빈의 생활을 하고 배운것이 없는 사람은 자유가 뭔지도 모를 뿐 아니라 왜 개인에게 필요한지에 대한 필요성을 못느낀다는 윤석열 대통령 (updated at 2024-03-08)

조선일보를 안본다는 사람들이 말하는 그 이유 - 천황폐하, 전두환 각하, 김일성 장군 만세? (created at 2024-03-07)

광폭타이어를 장착하면 성능이 좋아질거라는 착각 (updated at 2024-03-03)

면허시험장에서 면허갱신하면 하루만에 끝나나? (updated at 2024-03-03)