Socket 22 socket socketcreate int socketcreate int domain

  • Slides: 24
Download presentation

소켓 (Socket) (2/2) 네트워크 프로그래밍 socket() 함수 (socket_create()) int socket_create (int domain, int type,

소켓 (Socket) (2/2) 네트워크 프로그래밍 socket() 함수 (socket_create()) int socket_create (int domain, int type, int protocol) • domain: AF_INET (Internet), AF_UNIX (UNIX) 통상 AP_INET만 사용함 • type: SOCK_STREAM, SOCK_DGRAM, SOCK_SEQPACKET, SOCK_RAW, SOCK_RDM 통상 UDP로서 SOCK_DGRAM을, TCP로서 SOCK_STREAM만을 사용함 • protocol: SOL_ICMP, SOL_UDP, SOL_TCP 통상 0를 입력하면 됨 • 리턴 값이 -1이면 실패 (그렇지 않으면 성공) Page 3 Web Programming by Yang-Sae Moon

UDP (User Data Protocol) (2/3) 네트워크 프로그래밍 UDP 수행(접속) 절차 클라이언트 서버 create() bind()

UDP (User Data Protocol) (2/3) 네트워크 프로그래밍 UDP 수행(접속) 절차 클라이언트 서버 create() bind() sendto() recvfrom() sendto() Page 6 Web Programming by Yang-Sae Moon

UDP (User Data Protocol) (3/3) 네트워크 프로그래밍 Bind (socket_bind()) int socket_bind (resource socket, string

UDP (User Data Protocol) (3/3) 네트워크 프로그래밍 Bind (socket_bind()) int socket_bind (resource socket, string address [, int port]) Receive From (socket_recvfrom()) int socket_recvfrom (resource socket, string buffer, int length, int flag, string address, int port); Send To (socket_sendto()) int socket_sendto (resource socket, string buffer, int length, int flag, string address, int port); Close (socket_close()) bool socket_close (resource socket) Page 7 Web Programming by Yang-Sae Moon

UDP 프로그램 예제 (2/5) 네트워크 프로그래밍 udp_server. php <? $addr = gethostbyname('127. 0. 0.

UDP 프로그램 예제 (2/5) 네트워크 프로그래밍 udp_server. php <? $addr = gethostbyname('127. 0. 0. 1'); $port = 5090; $buf = ""; $sock = socket_create(AF_INET, SOCK_DGRAM, 0); if ($sock < 0) die (strerror ($sock)); socket_set_option($sock, SOL_SOCKET, SO_REUSEADDR, 1); if (($ret = socket_bind ($sock, $addr, $port)) < 0) die (strerror ($ret)); do { $read = socket_recvfrom($sock, $buf, 2048, 0, $addr, $port); echo "Receive data: $buf "; $temp = preg_split ("/s+/", $buf); // 문자열 분해 (space 하나 이상) sort ($temp); for ($i = count ($temp) - 1; $i >= 0; $i--) $resp. = $temp[$i]. " "; $send = socket_sendto ($sock, $resp, strlen ($resp), 0, $addr, $port); echo "Send data: $resp "; } while ($read < 0); socket_close ($sock); ? > Page 9 Web Programming by Yang-Sae Moon

UDP 프로그램 예제 (3/5) 네트워크 프로그래밍 udp_client. php <? PHP $addr = gethostbyname ('127.

UDP 프로그램 예제 (3/5) 네트워크 프로그래밍 udp_client. php <? PHP $addr = gethostbyname ('127. 0. 0. 1'); $port = 5090; $data = "Apple Orange Banana Pear"; $buf 1 = ""; $sock = socket_create (AF_INET, SOCK_DGRAM, 0); if ($sock < 0) die (strerror ($sock)); $ret = socket_sendto ($sock, $data, strlen ($data), 0, $addr, $port); echo "Send data: $data "; do { $read = socket_recvfrom ($sock, $buf 1, 2048, 0, $addr, $port); } while ($read < 0); echo "Receive data: $buf 1 "; socket_close ($sock); ? > Page 10 Web Programming by Yang-Sae Moon

UDP 프로그램 예제 (4/5) 네트워크 프로그래밍 실행 결과 Page 11 Web Programming by Yang-Sae

UDP 프로그램 예제 (4/5) 네트워크 프로그래밍 실행 결과 Page 11 Web Programming by Yang-Sae Moon

UDP 프로그램 예제 (5/5) 네트워크 프로그래밍 주의: php_sockets. dll 활성화할 것 Page 12 Web

UDP 프로그램 예제 (5/5) 네트워크 프로그래밍 주의: php_sockets. dll 활성화할 것 Page 12 Web Programming by Yang-Sae Moon

TCP (Transmission Control Protocol) (3/5) 네트워크 프로그래밍 TCP 수행(접속) 절차 클라이언트 서버 create() bind()

TCP (Transmission Control Protocol) (3/5) 네트워크 프로그래밍 TCP 수행(접속) 절차 클라이언트 서버 create() bind() connect() listen() accept() write() read() write() Page 15 Web Programming by Yang-Sae Moon

TCP (Transmission Control Protocol) (4/5) 네트워크 프로그래밍 Listen (socket_listen()): 클라이언트로부터 Connection을 기다리는 역할 int

TCP (Transmission Control Protocol) (4/5) 네트워크 프로그래밍 Listen (socket_listen()): 클라이언트로부터 Connection을 기다리는 역할 int socket_listen (resource socket, int backlog) Connect (socket_connect()): 클라이언트가 서버와 연결하기 위해 사용 int socket_connect (resource socket, string address [, int port]) Accept (socket_accept()): 서버쪽에서 연결을 받아들일 때, 클라이언트로 accept 메시지를 전송 int socket_accept (resource socket) Page 16 Web Programming by Yang-Sae Moon

TCP (Transmission Control Protocol) (5/5) 네트워크 프로그래밍 Read (socket_read()): 데이터를 받을 때 사용 int

TCP (Transmission Control Protocol) (5/5) 네트워크 프로그래밍 Read (socket_read()): 데이터를 받을 때 사용 int socket_read (resource socket_des, string buffer, int length [, int type]) Write (socket_write()): 데이터를 보낼 때 사용 int socket_write (resource socket_des, string &buffer, int length) Page 17 Web Programming by Yang-Sae Moon

TCP 프로그램 예제 (3/6) 네트워크 프로그래밍 tcp_server. php <? $address = "127. 0. 0.

TCP 프로그램 예제 (3/6) 네트워크 프로그래밍 tcp_server. php <? $address = "127. 0. 0. 1"; $port = 5071; if (($sock = socket_create (AF_INET, SOCK_STREAM, 0)) == FALSE) echo "socket_create() failed: reason: ". socket_strerror(socket_last_error()). " "; if(socket_set_option($sock, SOL_SOCKET, SO_REUSEADDR, 1) == FALSE) echo "socket_set_option() failed: reason: ". socket_strerror(socket_last_error()). " "; if (socket_bind ($sock, $address, $port) == FALSE) echo "socket_bind() failed: reason: ". socket_strerror(socket_last_error()). " "; if (socket_listen ($sock, 0) == FALSE) echo "socket_listen() failed: reason: ". socket_strerror(socket_last_error()). " "; if (($msgsock = socket_accept ($sock)) == FALSE) echo "socket_accept() failed: reason: ". socket_strerror(socket_last_error()). " "; Page 20 Web Programming by Yang-Sae Moon

TCP 프로그램 예제 (4/6) 네트워크 프로그래밍 tcp_server. php (계속) if(($buf = socket_read ($msgsock, 2048))

TCP 프로그램 예제 (4/6) 네트워크 프로그래밍 tcp_server. php (계속) if(($buf = socket_read ($msgsock, 2048)) == FALSE) echo "socket_read() failed: reason: ". socket_strerror(socket_last_error()). " "; echo "Receive data: $buf "; $temp = preg_split ("/s+/", $buf); sort ($temp); for ($i = count ($temp) - 1; $i >= 0; $i--) $talkback. = ($temp[$i]. " "); if(socket_write ($msgsock, $talkback, strlen ($talkback)) == FALSE) echo "socket_write() failed: reason: ". socket_strerror(socket_last_error()). " "; echo "Send data: $talkback "; socket_close ($msgsock); socket_close ($sock); ? > Page 21 Web Programming by Yang-Sae Moon

TCP 프로그램 예제 (5/6) 네트워크 프로그래밍 tcp_client. php <? $address = "127. 0. 0.

TCP 프로그램 예제 (5/6) 네트워크 프로그래밍 tcp_client. php <? $address = "127. 0. 0. 1"; $service_port = 5071; $socket = socket_create (AF_INET, SOCK_STREAM, 0); if ($socket == FALSE) echo "socket_create() failed: reason: ". socket_strerror(socket_last_error()). " "; if(socket_connect ($socket, $address, $service_port) == FALSE) echo "connect() failed: reason: ". socket_strerror(socket_last_error()). " "; $in = "Apple Orange Banana Pear"; if(socket_write ($socket, $in, strlen ($in)) == FALSE) echo "connect() failed: reason: ". socket_strerror(socket_last_error()). " "; echo "Send data: $in "; if(($out = socket_read ($socket, 2048)) == FALSE) echo "connect() failed: reason: ". socket_strerror(socket_last_error()). " "; echo "Receive data: $out "; socket_close ($socket); ? > Page 22 Web Programming by Yang-Sae Moon

TCP 프로그램 예제 (6/6) 네트워크 프로그래밍 실행 결과 Page 23 Web Programming by Yang-Sae

TCP 프로그램 예제 (6/6) 네트워크 프로그래밍 실행 결과 Page 23 Web Programming by Yang-Sae Moon

Homework #12 (실습 #11) Page 24 네트워크 프로그래밍 Web Programming by Yang-Sae Moon

Homework #12 (실습 #11) Page 24 네트워크 프로그래밍 Web Programming by Yang-Sae Moon