'[ 충남인력개발원 ] (2019)/┗TCP&IP'에 해당되는 글 43건

#include <sys/socket.h>

int socket(int domain,int type, int protocol);

성공시 파일 드스크립터, 실패시 -1 반환~~

 

소켓 만들엇움~

 

=============================

 

#include <sys/socket.h>

int bind(int sockfd, struct sockaadr *myaddr, socklen_t addrlen);

성공시 0 실패시 -1 반환

 

전화 받기 됫움  전화오길 기다리는중

 

====================

 

#include <sys/socket.h>

int listen(int sockfd, int backlog);

성공시 0 실패시 -1 반환

 

전화왓움 받음 을 만들엇움

 

 

=====================

 

#include <sys/socket.h>

int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

성공시 파일 드스크립터 , 실패시 -1 반환

 

======================

 

 

그럼 다 이어 볼까요??

 

Hello world~~~~~!!!

 

hello_server.c 만들기 

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
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;
    socklen_t clnt_addr_size;
    
    char message[]="Hello World!";
    
    if(agrc!=2)
    {
    	printf("Usage : %S <port>\n", argv[0]);
        exit(1);
    }
    
    serv_sock=socket(PF_Inet, Sock_STREAM, 0);
    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);
    serv_addr.sin_port=htons(atoi(argv[1]));
    
    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)
    	eroor_handling("accept error");
    
    write(clnt_sock, message, sizeof(message));
    close(clnt_sock);
    close(serv_sock);
    return 0;
}

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

오!! 티스토리 이런것도 되네 첨암!!

 

26번째줄 serv_sock이름으로 소켓 만듬

35번째줄 bind 함수로 (if 안에서 만들엇움) IP주소와 PORT번호 넣어주기

38번째줄 listen 함수로 (이것도 안에서 만들엇움) 연결요청 기다리는 놈 만들기(24시간 기다림)

42번째줄 연결요청 있을때까지 기다리는 놈 이제부터 일시킴 요청잇으면 나한테 보고함

46번째줄 기다리던 놈이 전화와서 나한테 줌 나 전화받아서 데이터 들음

 

그니깐 전화기 벨 안울리는거 누가 들고 있는거랑 비슷함 ㅇㅇ

소리들리면 보스한테 전화기 주는듯

블로그 이미지

Or71nH

,

1강부터 듣기 ~ 

http://www.orentec.co.kr/

 

====== 오렌지 미디어 ======

 

www.orentec.co.kr

여기서 강이 듣고 있다.

 

네트워크 프로그래밍 이란 

둘이상의 기기 데이터 송순 프로그램 그런뜻 

 

소켓이란 물리적 소프트웨어적 세세한 내용을 신경쓰지 않아도 되게 한거

 

예를 들어 전화기  

소켓이다???

 

전화기  ---> 전화망 ---> 딴집 전화기!!(여보세욧?)

중간중간이 데이터 넘기는게 소켓이다

 

 

TCP 소켓 ??

두가지로 나눠짐 

거는 소켓??

받는 소켓??

 

 

소켓의 주소 연결

 

 

IP & PORT 의 요청이 기초다

 

 

 

 

 

socket 함수 호출 ---> bind 함수 호출 ---> listen 함수 호출 --> accept 함수 호출

 [소켓 기기 만듬]      [ IP와PORT번호만듬]  [전화 받을 준비함]  [전화기 들어서 승인함]

블로그 이미지

Or71nH

,

설치 OS : ubuntu-18.04.3-desktop-amd64

www.ubuntu.com

 

Download Ubuntu Desktop | Download | Ubuntu

Ubuntu is an open source software operating system that runs from the desktop, to the cloud, to all your internet connected things.

ubuntu.com

가상 마운트 : VMware-player-15.5.1-15018445 다운로드 센터 

www.vmware.com

 

VMware – Cloud, Mobility, Networking & Security Solutions

Build your digital foundation with software-defined cloud, mobility, networking & security solutions from VMware & deliver any app to any device with any cloud.

www.vmware.com

다운로드 센터 들어가면 있움

 

설치하고 마운트 준비

블로그 이미지

Or71nH

,