Socket) Socket Programming

Bak·2024년 1월 30일
0

Socket

목록 보기
2/4

Socket programming

: Socket을 이용한 통신 프로그래밍(TCP기준)
→ C언어를 기준으로 작성되었으나 언어마다 함수의 이름만 다를 뿐 전체적인 흐름과 기능은 같다.


Socket

socket (int domain, int type, int protocol)
: socket 생성

domain 옵션AF_UNIXAF_INETAF_INET6
process끼리 통신IPv4IPv6

type 옵션SOCK_STREAMSOCK_DGRAMSOCK_RAW
TCPUDPIP계층바로사용

protocol 옵션IPPROTO_TCPIPPROTO_UDP0
TCPUDPtype에서 미리 정의

return 값-10
소켓 생성 실패소켓을 가리키는 소켓 디스크립터


Bind

bind(sockfd, serverIP, serverIP length)
: serverIP, serverPort를 socket에 할당

옵션sockfdserverIPserverIP length
fd 파일 디스크립터의 약자,
socket의 반환값
server의 IP Addresssizeof(serverIP) ,
진짜 길이

return 값-10
실패성공


Listen

listen(sockfd, backlog)
: 대기 상태

옵션sockfdbacklog
socket의 반환값연결 대기열의 크기,
request connection socket이 대기하는 대기열

return 값-10
실패성공


Accept

accept(sockfg, clientIP, clientIP_length)
: connection 수락, connectionSocket 생성
→ bind와 형식이 거의 같지만 server가 client로 전송하는 것.


Read, Write

: 데이터 전송 과정

read
write(connectSocket, message, sizeof(message))

옵션connectSocketmessagesizeof(message)
연결에 사용한 connectionSocketclient에게 보낼 메시지메시지의 크기


Close

: connection 끊기

close(connectSocket)


전체적인 흐름

: python 기준으로 send()/recv()read()/write()와 같은 용도이다.


Socket vs RestAPI

RestAPI는 실시간 통신이 아니다.

RestAPI : server와 client가 메시지를 주고받을 때마다 연결하고 종료하는 형식

socket : 한번 연결을 하면 메시지를 다 주고받기 전까지 종료하지 않고
메시지를 다 주고받은 후에야 close를 통해 연결을 종료한다.

통신방법RestAPISocket
연결data를 한번 주고받을 때마다data를 보내기 위한 connection을 맺을 때
종료data를 한번 주고받을 때마다client와 server가 data를 모두 다 주고받았을 때만

https://colinch4.github.io/2021-05-14/Rest_%EC%86%8C%EC%BC%93_%EC%B0%A8%EC%9D%B4/

0개의 댓글