Socket and TCP clientserver Outline n n n
- Slides: 11
Socket () and TCP clientserver
Outline n n n TCP client-server 架構和TCP socket function TCP client-server建構流程圖
TCP socket function n n 建立和連結函數:socket , bind 建立 listening socket: listen 接收連線要求函數:accept 連線建立和中断函數:connect , close 讀寫(I/O):read , write
(1/5) n 1. 開啟 Socket介面:Socket 就如同傳輸管道的出入口, 建立傳輸應用的兩端點須各自開啟一Socket,往後的 資料傳送,均依賴 read(送入此Socket)或 write (由 Socket讀出) 資料。需給AF_INET(socket family)、 SOCK_STREAM (socket type)、protocoltype等參數。 sock = socket(AF_INET, SOCK_STREAM, 0);
(2/5) n 2. Binding Socket地址:Socket 出入口需Binding到TCP address, 網路上的電腦主 機才可以依據使用者所指定的TCP address,建 立資料傳送的通道。TCP address 包含IP address (如 140. 115. 17. 111) 及TCP Port number。我們熟悉的網路應用: telnet 140. 115. 17. 111 23與ftp 140. 115. 17. 111 21,均需依據所 指定的 host IP與 Port,建立連接、傳輸資料。 name. sin_family = AF_INET; name. sin_addr. s_addr = INADDR_ANY; name. sin_port = 5000; bind(sock, (struct sockaddr *)&name, sizeof name)
(3/5) n 3. Connection的建立:電腦主機可以使用Binding TCP address後的Sock et,建立資 料傳送通道。Server/Client 的 傳輸模式,Server 端需呼叫accept() 功能,等待Client的連接 建立要求。Client端則呼叫connect()功能,要求與Server主機 建立連接通道。 msgsock = accept(sock, (struct sockaddr *)0, (int *)0); connect(sock, (struct sockaddr *)&server, sizeof server)
(4/5) n 4. 傳輸網路資料:Client與Server主機間成功地建立連 接通道後。兩端均可藉由各自的Socket出入口,read 或write 資料到對方。 rval = read(msgsock, buf, sizeof(buf)) wrval=write(msgsock, buf, sizeof(buf))
server Socket() Bind() client Listen() Socket() 連線建立 Connect() Write() 要求資料 Accept() 等待連線 要求 Read() Write() 連線結束 恢復等待 回覆資料 Read() Close() Read() 告知傳輸結束 Close()
參考網址 n n http: //content. edu. tw/primary/info_edu/cy_sa /report/more/8611 a 8. htm http: //dslab. cis. thu. edu. tw/course/netw ork/netprog/sockets/socket. htm