Presentation is loading. Please wait.

Presentation is loading. Please wait.

Socket Programming Present: KS Wu. 2003/10/6NTUEECS COBRA LAB 2 Outline UDP client/server communication Introduction of socket functions How MSN Messenger.

Similar presentations


Presentation on theme: "Socket Programming Present: KS Wu. 2003/10/6NTUEECS COBRA LAB 2 Outline UDP client/server communication Introduction of socket functions How MSN Messenger."— Presentation transcript:

1 Socket Programming Present: KS Wu

2 2003/10/6NTUEECS COBRA LAB 2 Outline UDP client/server communication Introduction of socket functions How MSN Messenger works

3 2003/10/6NTUEECS COBRA LAB 3 Outline UDP client/server communication Introduction of socket functions How MSN Messenger works

4 2003/10/6NTUEECS COBRA LAB 4 close() sendto() recvfrom() socket() bind() recvfrom() sendto() UDP Client UDP Server Wait for a request from client Process request Socket functions for UDP client-server

5 2003/10/6NTUEECS COBRA LAB 5 Outline UDP client/server communication Introduction of socket functions How MSN Messenger works

6 2003/10/6NTUEECS COBRA LAB 6 Socket functions socket() bind() recvfrom() sendto() closesocket()

7 2003/10/6NTUEECS COBRA LAB 7 socket Function int socket( int af, int type, int protocol ); Returns: nonnegative descriptor if OK, negative number on error sd = socket(AF_INET, SOCK_DGRAM, 0)

8 2003/10/6NTUEECS COBRA LAB 8 Parameters familyDescription AF_INETIPv4 protocols AF_INET6IPv6 protocols typeDescription SOCK_STREAMstream socket (TCP) SOCK_DGRAMdatagram socket (UDP) protocolDescription 0Normally set to 0

9 2003/10/6NTUEECS COBRA LAB 9 example int sd; sd = socket(AF_INET, SOCK_DGRAM, 0);

10 2003/10/6NTUEECS COBRA LAB 10 bind Function int bind( SOCKET sockfd, const struct sockaddr* name, int namelen ); Returns: 0 if OK, negative number on error

11 2003/10/6NTUEECS COBRA LAB 11 Parameters sockfd  Descriptor identifying an unbound socket. (returned by the socket function.) name  A pointer to a protocol-specific address namelen  Length of the value in the name parameter, in bytes.

12 2003/10/6NTUEECS COBRA LAB 12 example struct sockaddr_in serv; serv.sin_family = AF_INET; serv.sin_addr.s_addr = htonl(INADDR_ANY); serv.sin_port = htons(3000); bind(serv_sd, &serv, sizeof(serv));

13 2003/10/6NTUEECS COBRA LAB 13 recvfrom Function int recvfrom( SOCKET sockfd, char* buf, int len, int flags, struct sockaddr* from, int* fromlen ); Returns: # of bytes received (< len) if OK, 0 if connection has been gracefully closed, negative number on error

14 2003/10/6NTUEECS COBRA LAB 14 Parameters sockfd  Descriptor identifying a bound socket. buf  Buffer for the incoming data. len  Length of the data in buf, in bytes.

15 2003/10/6NTUEECS COBRA LAB 15 Parameters (cont.) flags  Indicator specifying the way in which the call is made. (usually set to 0) from  Optional pointer to a buffer in a sockaddr structure that will hold the source address upon return. fromlen  Optional pointer to the size, in bytes, of the from buffer.

16 2003/10/6NTUEECS COBRA LAB 16 example char mesg[MAXLINE]; n = recvfrom(sd, mesg, MAXLINE, 0, &cli, &cli_len);

17 2003/10/6NTUEECS COBRA LAB 17 sendto Function int sendto( SOCKET sockfd, const char* buf, int len, int flags, const struct sockaddr* to, int tolen ); Returns: # of bytes sent (< len) if OK, negative number on error

18 2003/10/6NTUEECS COBRA LAB 18 Parameters sockfd  Descriptor identifying a bound socket. buf  Buffer containing the data to be transmitted. len  Length of the data in buf, in bytes.

19 2003/10/6NTUEECS COBRA LAB 19 Parameters (cont.) flags  Indicator specifying the way in which the call is made. (usually set to 0) to  Optional pointer to a sockaddr structure that contains the address of the target socket. tolen  Size of the address in to, in bytes.

20 2003/10/6NTUEECS COBRA LAB 20 example sendto(sd, mesg, n, 0, &cli, cli_len);

21 2003/10/6NTUEECS COBRA LAB 21 closesocket Function int closesocket( SOCKET sockfd ); Returns: 0 if OK, negative number on error

22 2003/10/6NTUEECS COBRA LAB 22 Parameters sockfd  Descriptor identifying the socket to close.

23 2003/10/6NTUEECS COBRA LAB 23 example closesocket(sd);

24 2003/10/6NTUEECS COBRA LAB 24 Outline UDP client/server communication Introduction of socket functions How MSN Messenger works

25 2003/10/6NTUEECS COBRA LAB 25 How MSN Messenger works 2 phases  Authentication Phase  Instant Messaging Phase

26 2003/10/6NTUEECS COBRA LAB 26 How MSN Messenger works (cont.) Authentication Phase  logging into the MSN messenger server  Retrieve the friend list Instant Messaging Phase  Session-based  sending/accepting requests for an Instant Messaging session  sending/receiving messages

27 2003/10/6NTUEECS COBRA LAB 27 Server Components Dispatch Server Notification Server Switchboard Server

28 2003/10/6NTUEECS COBRA LAB 28 Dispatch server protocol version negotiation determination of which NS is associated with the client making a connection referring the client to the proper NS

29 2003/10/6NTUEECS COBRA LAB 29 Notification server authenticate, synchronize user properties exchange asynchronous event notifications

30 2003/10/6NTUEECS COBRA LAB 30 Switchboard server provide instant messaging sessions

31 2003/10/6NTUEECS COBRA LAB 31 Scenario DS Client 1. 確定版本 TCP (port 1863) version version! 2. 確定加密演算法 Policy?SP (MD5) 3. 認證使用者 Initiate infoChallenge infoPasswd + challenge userID + nickname

32 2003/10/6NTUEECS COBRA LAB 32 Scenario DS Client 4. 將 user 導到 NS NS addr:port NS Log in 5. 同步化使用者資訊 ( 更新 ) Latest properties? (cache) Yes No, update! 6. 下載新版 friend list List? List aa@aaa.comaa@aaa.com nickname b@bbb.comb@bbb.com nickname …

33 2003/10/6NTUEECS COBRA LAB 33 Scenario Client NS 7. 使用者狀態 State Online Offline Invisible OK! 8. 修改 friend list OK! (new SN) ADD/REM xx@xxx.com nicknamexx@xxx.com

34 2003/10/6NTUEECS COBRA LAB 34 Scenario Client A NS SS? 將 user 導到 SS SS addr SP (CHI) cookie 連結 SS 及做認證 SS userID cookie OK! 邀請使用者加入對談的 session I want to talk with B! SessionID 建立對談 Client B SessionID SS addr SP Cookie IDA nickname IDB cookie sessionID Index, # of participants 送出及時訊息 Hello!

35 2003/10/6NTUEECS COBRA LAB 35 Scenario Client A NSSS Client B 變更 Session 參與者 JOIN! Client C New userID nickname Left! Left userID Bye!

36 2003/10/6NTUEECS COBRA LAB 36 Download http://cobra.ee.ntu.edu.tw/~fku/temp.htm

37 2003/10/6NTUEECS COBRA LAB 37 Reference “Unix Network Programming” “WinSock 網路程式設計之鑰 ” http://msdn.microsoft.com http://www.hypothetic.org/docs/msn/ietf_dr aft.php http://www.hypothetic.org/docs/msn/ietf_dr aft.php

38 Thank You!


Download ppt "Socket Programming Present: KS Wu. 2003/10/6NTUEECS COBRA LAB 2 Outline UDP client/server communication Introduction of socket functions How MSN Messenger."

Similar presentations


Ads by Google