아래 내용들은 윤성우 저자의 "지피지기 TCP/IP소켓 프로그래밍" 책의 내용을 바탕으로 본인이 읽고 새로 정리한 내용들이니,
다소의 오류가 있을 수도 있습니다.


서버 소켓 기본 코드
[code cpp]
/*
* helloWorld_server.c
* Written by SW.YOON
* Edited by Michael YOON
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>

#define default_PT 89123

void error_handling(char *message);

int main(int argc, char ** argv)
{
    int serv_sock;
    int clnt_sock;
    struct sockaddr_in serv_addr;
    struct sockaddr_in clnt_addr;
    int clnt_addr_size;
    char message[]="Hello World!\n";

    if(argc>1)
    {
        printf("Usage : %s <port>\n" ,argv[0]);    //사용법
        printf("Default port is 89123\n");
    }
////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////기본 소켓 생성 설정/////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////
    serv_sock=socket(PF_INET, SOCK_STREAM,0);    //서버소켓 만들기
                                //PF_INET은

    if(serv_sock == -1)
        error_handling("socket() error");        //서버소켓 만들기 실패 시

    memset(&serv_addr,0,sizeof(serv_addr));
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
    if(argc==2)
    {
        serv_addr.sin_port = htons( atoi(argv[1]) );
    }
    else
    {
        serv_addr.sin_port = htons( atoi(default_PT) );
    }

    if( bind( serv_sock, (struct sockaddr* )&serv_addr, sizeof(serv_addr) ) == -1 )
    {
        error_handling("bind() error");
    }

    if( listen(serv_sock,5) == -1 )
    {
        error_handling("listen() error");
    }
////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////
    clnt_addr_size = sizeof(clnt_addr);
    clnt_sock=accept( serv_sock, (struct sockaddr*) &clnt_addr, &clnt_addr_size );
                                /* 연결 수락 */
    if(clnt_sock == -1)
        error_handling("accept() error");    write( clnt_sock, message, sizeof(message) );        /* 데이터 전송 */
    close(clnt_sock);                        /* 연결 종료 */
    return 0;
}

void error_handling(char *message)
{
    fputs( message, stderr );
    fputc( '\n', stderr);
    exit(1);
}

[/code]

기본 연결포트는 89123포트로 설정해 놓았습니다.

우선 하나하나 코드를 살펴보면




22줄. 클라이언트 소켓을 선언합니다.




24줄. 클라이언트의 IPv4주소체계를 기록하는 구조체이다.


25줄. 클라이언트 IPv4 주소 구조체의 크기를 기록하는 구조체이다.


26줄. 간단히 Hello World! 문자열을 출력하기 위한 문자배열이다.


28~32줄. 인자의 개수를 파악하여 사용법을 알려주기도 한다.

















'생활 > 소켓프로그래밍' 카테고리의 다른 글

인터넷 쿼리함수(windows용)  (0) 2012.03.10
소켓 프로그래밍의 기초(1)  (0) 2010.02.05

아래 내용들은 윤성우 저자의 "지피지기 TCP/IP소켓 프로그래밍" 책의 내용을 바탕으로 본인이 읽고 새로 정리한 내용들이니,
다소의 오류가 있을 수도 있습니다.

   

  1. 소켓의 이해.
    1. 서버프로그램.
      서버프로그램의 작동은 크게 x가지 과정으로 나뉜다.
      1. 소켓 생성
        int socket(int domain, int type, int protocol);
        함수를 이용해 소켓을 생성한다.
        (헤더 "sys/type.h", "sys/socket.h")
      2. 소켓 바인딩
        int bind(int sockfd, struct sockaddr *myaddr, int addrlen);
        함수를 이용하여 소켓에 주소 및 포트를 할당한다.
      3. 리스닝
        int listen(int sockfd, int backlog);
        함수를 이용하여 소켓에 연결이 준비한다.
      4. 엑셉트
        int accept(int sockfd, struct sockaddr *addr, int *addrlen);
        함수를 이용하여 클라이언트와 연결한다.
    2. 클라이언트 프로그램.
      클라이언트 소켓의 작동은 크게 x가지 과정으로 나뉜다.
      1. 소켓 생성
      2. 컨넥트
        int connect(int sockfd, struct sockaddr *serv_addr, int addrlen);
        함수를 이용하여 서버와 연결한다.

'생활 > 소켓프로그래밍' 카테고리의 다른 글

인터넷 쿼리함수(windows용)  (0) 2012.03.10
소켓 프로그래밍의 기초(2)  (0) 2010.02.05
01234567891011

자 너무 많아서 Gallery로 묶었습니다. 웹 플랫폼 빌더로 한번에 웹서버 설치중...

어느새 모여든 회원들,,,

모종의 오류로 플랫폼빌더 재실행,,,

다시 설치해서 텍스트 큐브 설정,,,

드디어 나타난 텍큐 설치화면(위에서 설정 다했는데 왜 또 나오는거지??)

이렇게 삽질을 거듭한 끝에 만들었는데, 결론은 하이퍼-V를 설치하다가 좆ㅋ망ㅋ,,,
지금 기숙사에서 다시 윈도 밀고 재작업 중입니다..ㅠㅠ

'대학생활 > 동아리' 카테고리의 다른 글

드디어 서버 설치 완료!!  (0) 2009.11.20
동아리 서버설치(2)  (0) 2009.11.19
동아리 서버설치(1)  (0) 2009.11.19
오늘은 동아리의 서버를 설치했습니다
서버의 OS는 윈도우 서버 2008 R2 스텐다드 버전이고,
서버의 종류는 IIS+PHP+MYSQL 이에요.

설치파일이 다 올라오기를 기다리는중,,,(실수로 접사를 안빼놓고 찍어서 글자가 뭉개졌,,,)

왜인지는 모르겠지만 설치파일이 안올라 와서 그동안 동아리 세미나 홍보용 간판제작(날짜를 빼먹어서 다시만들,,,,쿨럭)

드디어 버전선택 화면. 여러가지 있는데 그냥 2008 R2 스텐다드로 설치~

'대학생활 > 동아리' 카테고리의 다른 글

드디어 서버 설치 완료!!  (0) 2009.11.20
동아리 서버설치(3)  (0) 2009.11.19
동아리 서버설치(2)  (0) 2009.11.19
엊그제 배송된 페도라 리눅스 책을 보면서 페도라 11을 2대 설치했다.
0

근데 문제는 책에는 페도라 코어 4로 설명이 되있고, 부록으로 설치시디 4장이 들어있다.
하지만 내 책에는 부록으로 시디가 2장밖에 없었다!!!

받자마자 설치파트를 보고 다운받으러 갔다가 페도라 11로 업그레이드 된걸 보고,
처음은 시키는 대로 해야지 라는 생각에 설치시디를 보니 1/4, 2/4만 있고, 3/4, 4/4가 없었다.

혹시 1, 2만 갖고 데모를 써본뒤에 3,4는 알아서 구하라는건가? 싶어 yesXX서점에
바로 문의를 해보고 받은 답변,,
0

일단 페도라 11로 갖고 놀고 있어야지,,, 근데 몇가지 명령어(? 프로그램? )이 빠진건지 사라진건지,,,
코어4는 지원기간도 끝났고,,

P.S. 코어가 무료배포용이라고 했는데, 페도라로 다시 합쳐진건기???

'생활 > 공부' 카테고리의 다른 글

구성 요소 기본 포트 번호  (0) 2009.12.30
10만원어치 책,,,  (0) 2009.11.12