Presentation is loading. Please wait.

Presentation is loading. Please wait.

Socket () and TCP client-server

Similar presentations


Presentation on theme: "Socket () and TCP client-server"— Presentation transcript:

1 Socket () and TCP client-server

2 Outline TCP client-server 架構和TCP socket TCP socket function

3 TCP client-server client server 建立socket 連結socket 開啓listening socket
收到連線要求後並確定連線成功使用I/O函數互傳訊息 建立socket 通知server 要求連線 連使用線成功後I/O函數和SERVER 互傳訊息

4 TCP socket function 建立和連結函數:socket , bind 建立 listening socket: listen
接收連線要求函數:accept 連線建立和中断函數:connect , close 讀寫(I/O):read , write

5 sock = socket(AF_INET, SOCK_STREAM, 0);
(1/5) 1.開啟 Socket介面:Socket 就如同傳輸管道的出入口,建立傳輸應用的兩端點須各自開啟一Socket,往後的資料傳送,均依賴 read(送入此Socket)或 write (由Socket讀出) 資料。需給AF_INET(socket family)、SOCK_STREAM (socket type)、protocoltype等參數。 sock = socket(AF_INET, SOCK_STREAM, 0);

6 (2/5) 2.Binding Socket地址:Socket 出入口需Binding到TCP address,網路上的電腦主 機才可以依據使用者所指定的TCP address,建立資料傳送的通道。TCP address 包含IP address (如 ) 及TCP Port number。我們熟悉的網路應用: telnet 與ftp ,均需依據所指定的 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)

7 (3/5) 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)

8 (4/5) 4.傳輸網路資料:Client與Server主機間成功地建立連接通道後。兩端均可藉由各自的Socket出入口,read 或write 資料到對方。 rval = read(msgsock,buf,sizeof(buf)) wrval=write(msgsock,buf,sizeof(buf))

9 (5/5) 5.關閉 Socket介面:當應用程式不再使用Socket 出入口做資料傳送時 ,需關閉Socket close(sock)

10 server Socket() Bind() client Listen() Socket() Accept() 連線建立 等待連線要求 Connect() Read() 要求資料 Write() Write() 連線結束恢復等待 回覆資料 Read() Read() 告知傳輸結束 Close() Close()

11 參考網址


Download ppt "Socket () and TCP client-server"

Similar presentations


Ads by Google