#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

,

[vi edit에서 줄번호 자동으로 보이기]

vim 초기화 파일에 명령어 추가

vi ~/.vimrc
set number (줄번호 숨길때 set nonumber, set nonu)

그 밖의 들여쓰기 기능들...

set autoindent

자동 들여쓰기가 되도록 설정

set cindent

C 언어 파일 수정시 들여쓰기가 되도록 설정

set tabstop=n (숫자)

탭 넓이를 n 만큼 띄움

set shiftwidth=n (숫자)

들여쓰기 간격을 n 만큼 띄움

syntax on (라즈베리파이 안될 수 있음)

구문강조 표시 설정

set showmatch

선택된 괄호와 짝을 이루는 괄호에 대해 강조

set ignorecase

대소문자 구별없이 검색하도록 설정

set number

줄번호를 표시

 

[자주 쓰는 명령어 요약]

1. 복사및붙여넣기

'V' (비주얼모드)에서 블럭지정 후 y(복사), x(잘라내기) 후 p로 붙여넣는다.

Ctrl+v 는 글자단위 선택

2. 해당 문자열 찾고 바꾸기


/찾으려는 문자열 입력한후 엔터

n을 부르면 문자열을 매칭해가면 찾을수 있음.

:s/aaa/bbb 엔터 현재줄의 aaa를 bbb로 교체

:%s/aaa/bbb 엔터 문서 전체에서 old를 new로 교체

3. 저장후 종료

:w 저장

:w! 저장후 편집종료

:q 저장하지 않고 종료

:q! 저장하지 않고 에디터 강제종료

:e 다른파일 편집

:e! 편집내용 저장하지 않고 최종 저장된 상태로 파일열기

4. 입력

i 문자앞에서부터 입력
cw 커서 위치의 한 단어 수정
c 커서 위치부터 줄의 끝까지 수정
a Cursor 다음에 text 추가
A 해당 라인의 끝에 text 추가

5. 되돌리기 되살리기

u 되돌리기

ctrl+r 되살리기


5. 복사
:1,3 co 5
:4,6 m 8


6. 줄 올리기
J


VI 에디터 명령어 표

 

1. 시작

vi file

vi를 시작하여 지정한 파일 편집

vi -R file

읽기 전용(read- only) 편집기로서 vi를 시작하여 지정한 파일 편집

view file

읽기 전용(read- only) 편집기로서 vi를 시작하여 지정한 파일 편집

2. 종료

:wq

데이터를 저장하고 종료

:q!

데이터를 저장하지 않고 종료

3. 시스템이 다운된 후에 되살리기

vi -r

되살릴 수 있는 모든 파일 이름 보여주기

vi -r file

vi를 시작하여 지정한 파일 되살리기

4. 디스플레이 제어하기

^L

현재 화면을 다시 디스플레이하기

:set number

내부 줄 번호 디스플레이

:set nonumber

배부 줄 번호 디스플레이 않기

5. 마지막으로 지운 것 복사하기

p

마지막으로 지워진 것을 커서의 뒤/아래에 삽입

P

마지막으로 지워진 것을 커서의 앞/위에 삽입

xp

두 문자를 바꿈

deep

두 단어를 바꿈

ddp

두 줄을 바꿈

6. 패턴 검색

/rexp

지정된 정규 표현식에 대해 앞으로 이동

/

이전의 패턴에 대해 앞으로 검색을 반복

?rexp

지정된 정규 표현식에 대해 뒤로 이동

?

이전의 패턴에 대해 뒤로 검색을 반복

n

/ ?명령에 대해 같은 방향으로 반복

N

/ ?명령에 대해 반대 방향으로 반복

7. 약어의 사용

:ab short long

short long에 대한 약어로 변경

:ab

현재 약어 목록을 표시

:una short

약어 short를 표시

8. 줄 길이의 조정

r <Return>

문자를 뉴라인으로 변경

J

줄의 결합

:set wm=n

오른쪽으로 n문자 위치에서 자동적으로 줄 나눔

9. 커서 이동

h<Left>

커서를 한 칸 왼쪽으로 이동

j<Down>

커서를 한 줄 아래로 이동

k<Up>

커서를 한 줄 위로 이동

l<Right>

커서를 한 칸 오른쪽으로 이동

<Backspace>

커서를 한 칸 왼쪽으로 이동

<Space>

커서를 한 칸 오른쪽으로 이동

-

커서를 이전 줄의 처음으로 이동

+

커서를 다음 줄의 처음으로 이동

<Return>

커서를 다음 줄의 처음으로 이동

0

커서를 현재 줄의 맨 앞으로 이동

$

커서를 현재 줄의 맨 끝으로 이동

^

커서를 현재 줄의 첫글자(공백이나 탭이 아닌)로 이동

w

커서를 다음 단어의 첫 글자로 이동

e

커서를 다음 단어의 끝 글자로 이동

b

커서를 이전 단어의 첫 글자로 이동

W

w와 같음(문장 부호 무시)

E

e와 같음(문장 부호 무시)

B

b와 같음(문장 부호 무시)

(

다음 문장의 처음으로 이동

)

이전 문장의 처음으로 이동

{

다음 문단의 처음으로 이동

}

이전 문단의 처음으로 이동

H

커서를 화면 맨 위로 이동

M

커서를 중간으로 이동

L

커서를 맨 아래로 이동

10. 편집 버퍼를 통한 이동

^F

한 화면 아래로 이동

^B

한 화면 위로 이동

n^F

n화면 아래로 이동

n^B

n화면 위로 이동

^D

반 화면 아래로 이동

^U

반 화면 위로 이동

n^D

n줄만큼 아래로 이동

n^U

n줄만큼 위로 이동

11. 셸 명령 실행

:!command

vi를 중단하고 지정한 셸 명령을 실행

:!!

vi를 중단하고 이전의 셸 명령을 실행

:sh

vi를 중단하고 셸을 실행

:!csh

vi를 중단하고 새로운 C-셸을 실행

12. 패턴에 의한 치환

:s/pattern/replace/

현재 줄의 치환

:lines/pattern/replace/

지정한 줄의 치환

:line,lines/pattern/replace/

지정한 범위의 치환

:%s/pattern/replace/

모든 줄의 치환

13. 데이터 읽기

:liner file

file의 내용을 지정한 줄 다음에 삽입

:r file

file의 내용을 현재의 줄 다음에 삽입

:liner !command

command의 결과를 지정한 줄 다음에 삽입

:r !command

command의 결과를 현재의 줄 다음에 삽입

:r !look pattern

지정한 pattern으로 시작된 단어 삽입

14. 정규 표현식을 사용하기 위한 특수 기호

.

뉴라인을 제외한 모든 단일 문자와 대응

*

영 또는 그 이상의 선행 문자와 대응

^

줄의 시작과 대응

$

줄의 끝과 대응

\<

단어의 시작과 대응

\>

단어의 끝과 대응

[ ]

묶여진 문자중의 하나와 대응

[^ ]

묶여진 문자를 제외한 아무것하고나 대응

\

이어지는 기호를 문자 그대로 해석

15. 줄 번호

nG

줄번호 n으로 건너뛰기

1G

편집 버퍼의 첫 줄로 건너뛰기

G

편집 버퍼의 마지막 줄로 건너뛰기

:map g lG

g lG와 같도록 매크로 정의

16. 삽입

i

입력 모드로 전환, 커서 위치 앞에서 삽입

a

입력 모드로 전환, 커서 위치 뒤에서 삽입

I

입력 모드로 전환, 현재 줄의 앞에 삽입

A

입력 모드로 전환, 현재 줄의 끝에 삽입

o

입력 모드로 전환, 현재 줄의 아래에 전개

O

입력 모드로 전환, 현재 줄의 위에 전개

17. 편집하고 있는 파일을 바꾸기

:e file

지정한 파일의 편집

:e! file

지정한 파일의 편집, 자동 점검의 생략

18. 내용 고치기

r

단지 한 글자만 변경(입력 모드로 바뀌지 않음)

R

입력하는 대로 겹쳐 써서 변경

s

삽입에 의해 한 단어의 변경

C

커서의 위치로부터 줄 끝까지 삽입에 의한 변경

cc

전체 줄을 삽입에 의한 변경

S

전체 줄을 삽입에 의한 변경

cmove

커서부터 move까지 삽입에 의해 변경

~

,소문자 바꾸기

19. 고치기의 취소 또는 반복

u

편집 버퍼를 수정했던 마지막 명령을 취소

U

현재 줄을 저장

.

편집 버퍼를 수정했던 마지막 명령 반복

20. 문자 삭제

x

커서가 있는 문자 삭제

X

커서의 왼쪽 문자 삭제

D

커서부터 줄의 끝까지 삭제

dd

현재 줄의 전체 삭제

dmove

커서부터 move까지 삭제

dG

커서부터 편집 버퍼의 끝까지 삭제

d1G

커서부터 편집 버퍼의 맨 앞까지 삭제

:lined

지정한 줄의 삭제

:line, lined

지정한 범위의 삭제

21. 여러 줄의 복사와 이동

:linecotarget

지정한 줄을 복사하여 target 줄 밑에 삽입

:line, linecotarget

지정한 범위를 복사하여 target 줄 밑에 삽입

:linemtarget

지정한 줄로 이동하여 target 줄 밑에 삽입

:line, linemtarget

지정한 범위로 이동하여target 줄 밑에 삽입

22. 데이터를 처리하기 위한 셸 명령의 사용

n!!command

n번 줄에서 command의 실행

!move command

커서부터 move까지 command 실행

!move fmt

커서부터 move까지 줄들을 형식 맞추기

23. 데이터 저장하기

:w

원래의 파일로 데이터를 저장

:w file

지정한 파일로 데이터를 저장

:w>> file

지정한 파일에 데이터를 추가

 

 

블로그 이미지

Or71nH

,

오늘 교육 이해안가는거 공부할거

 

링크드 리스트 만들기

 

 

 

mv 의 작동 방법

어떻것들이 되나

./a.out??? 이거뭐임

 

미션

1. 검색하기

아이디 입력 받아서 찾아내기

 

 

2. 수정하기 입력받고 수정하기

검색후 새로운 값으로 수정하기

 

3. 끼워넣기 쎌 로드 추가하기

 

4. 정렬하기

나이 배틀포인트

 

링크드 리스트 정보

 

https://luckyyowu.tistory.com/324

블로그 이미지

Or71nH

,