Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Ch 3. Network Programming. 2 Network Programming (1)  Network allows arbitrary applications to communicate E.g., client-server computing such as WEB.

Similar presentations


Presentation on theme: "1 Ch 3. Network Programming. 2 Network Programming (1)  Network allows arbitrary applications to communicate E.g., client-server computing such as WEB."— Presentation transcript:

1 1 Ch 3. Network Programming

2 2 Network Programming (1)  Network allows arbitrary applications to communicate E.g., client-server computing such as WEB browsing  GUI  Functions supported  data transmission via underlying network

3 3 Network Programming (2)  A programmer can create Internet application software without understanding the underlying network technology  Network facilities are accessed through an Application Program Interface (API)

4 4

5 5

6 6 Echo server  Useful for network testing  Server returns exact copy of data sent  Server: Bind port number  Client: Assign server IP (host) and port number (AP) LAN ServerClient > echoserver 22000 > echoclient X 22000

7 7

8 8 A Intuitive Look at the API Server await_contact() recv() send() send_eof() Client make_contact() send() recv() send_eof()

9 9 Exercise: Files needed  CNAI API code readln.c send_eof.c make_contact.c cname_to_comp.c cnaiapi_init.c await_contact.c appname_to_appnum.c  Header files cnaiapi.h cnaiapi_win32.h  C source code echoserver.c echoclient.c  Readme.txt

10 10 Build net programs under Windows (1)  Have cnaiapi.lib available [File][New][Win32 Static Library] Replace #include with #include “xxx.h“ in.c and.h files [Project][Add to project][Fies]  Seven.c files [Build][Build cnaiapi.lib]

11 11 Build net programs under Windows (2)  Include “cnaiapi.h” in each of the C program files that use CNAI API library calls  Link cnaiapi.lib into the program [project] [settings] [Link tag] [general category] including 'cnaiapi.lib‘ in the Object/Library Modules setting the Additional Library Path in the Input Cate.  link to the WinSock 2 library (ws2_32.lib)

12 12 Appendix

13 13

14 14 A Intuitive Look at the API ServerClient socket() // open a TCP socket bind() listen() accept() read() write() connect() // bind port number assign server IP and port number // connect to the specific // server write() read() // blocking mode closes ()close ()

15 15

16 16 A Intuitive Look at the API Server await_contact() recv() send() send_eof() Client make_contact() send() recv() send_eof()

17 17 Echo client  /* echoclient.c */  #include  #define BUFFSIZE256  #define INPUT_PROMPT"Input > "  #define RECEIVED_PROMPT"Received> "  int readln(char *, int);  /*-----------------------------------------------------------------------  *  * Program: echoclient  * Purpose: contact echoserver, send user input and print server response  * Usage: echoclient [appnum]  * Note: Appnum is optional. If not specified the standard echo appnum  * (7) is used.  *  *-----------------------------------------------------------------------  */  int  main(int argc, char *argv[])  {  computercomp;  appnumapp;  connectionconn;  charbuff[BUFFSIZE];  intexpect, received, len;  if (argc 3) {  (void) fprintf(stderr, "usage: %s [appnum]\n",  argv[0]);  exit(1);  }

18 18  /* convert the arguments to binary format comp and appnum */  comp = cname_to_comp(argv[1]);  if (comp == -1)  exit(1);  if (argc == 3)  app = (appnum) atoi(argv[2]);  else  if ((app = appname_to_appnum("echo")) == -1)  exit(1);   /* form a connection with the echoserver */  conn = make_contact(comp, app);  if (conn < 0)  exit(1);  (void) printf(INPUT_PROMPT);  (void) fflush(stdout);

19 19  /* iterate: read input from the user, send to the server,*/  /* receive reply from the server, and display for user */  while((len = readln(buff, BUFFSIZE)) > 0) {  /* send the input to the echoserver */  (void) send(conn, buff, len, 0);  (void) printf(RECEIVED_PROMPT);  (void) fflush(stdout);  /* read and print same no. of bytes from echo server */  expect = len;  for (received = 0; received < expect;) {  len = recv(conn, buff, (expect - received) < BUFFSIZE ?  (expect - received) : BUFFSIZE, 0);  if (len < 0) {  send_eof(conn);  return 1;  }  (void) write(STDOUT_FILENO, buff, len);  received += len;  }  (void) printf("\n");  (void) printf(INPUT_PROMPT);  (void) fflush(stdout);  }  /* iteration ends when EOF found on stdin */  (void) send_eof(conn);  (void) printf("\n");  return 0;  }

20 20

21 21 A Intuitive Look at the API Server await_contact() recv() send() send_eof() Client make_contact() send() recv() send_eof()


Download ppt "1 Ch 3. Network Programming. 2 Network Programming (1)  Network allows arbitrary applications to communicate E.g., client-server computing such as WEB."

Similar presentations


Ads by Google