1 / 21

Ch 3. Network Programming

Ch 3. Network Programming. 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. Network Programming (2).

blancaallen
Download Presentation

Ch 3. Network Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ch 3. Network Programming

  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. 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. 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) Client Server LAN > echoserver 22000 > echoclient X 22000

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

  6. 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

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

  8. 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)

  9. Appendix

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

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

  12. Echo client • /* echoclient.c */ • #include <stdlib.h> • #include <stdio.h> • #include <cnaiapi.h> • #define BUFFSIZE 256 • #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 <compname> [appnum] • * Note: Appnum is optional. If not specified the standard echo appnum • * (7) is used. • * • *----------------------------------------------------------------------- • */ • int • main(int argc, char *argv[]) • { • computer comp; • appnum app; • connection conn; • char buff[BUFFSIZE]; • int expect, received, len; • if (argc < 2 || argc > 3) { • (void) fprintf(stderr, "usage: %s <compname> [appnum]\n", • argv[0]); • exit(1); • }

  13. /* 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);

  14. /* 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; • }

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

More Related