Download presentation
Presentation is loading. Please wait.
Published byBarnaby Kelley Modified over 9 years ago
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()
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.