Presentation is loading. Please wait.

Presentation is loading. Please wait.

Network Programming By J. H. Wang Nov. 21, 2011. Outline Introduction to network programming Socket programming –BSD Socket –WinSock –Java Socket Exercises.

Similar presentations


Presentation on theme: "Network Programming By J. H. Wang Nov. 21, 2011. Outline Introduction to network programming Socket programming –BSD Socket –WinSock –Java Socket Exercises."— Presentation transcript:

1 Network Programming By J. H. Wang Nov. 21, 2011

2 Outline Introduction to network programming Socket programming –BSD Socket –WinSock –Java Socket Exercises

3 Introduction Internet –TCP/IP protocol stack Client-server model –What do you need: client or server? Programming experience –C, C++, Java, … Tools needed –C/C++/Java Compiler –Packet sniffers

4 What’s a Socket Source IP, port Destination IP, port Protocol –TCP –UDP Connection method –Connection-oriented: SOCK_STREAM –Connectionless: SOCK_DGRAM

5 Socket Programming UNIX BSD socket (in C) Windows socket (in Dev-C++) Java socket API Perl, Python, …

6 Berkeley Socket General functions –open(), connect(), close(), send(), recv(), … Functions for servers –bind(), listen(), accept() –select(), FD_SET, FD_CLR, FD_ISSET, …

7 An Example BSD Socket Program – a simple client (1/2) #include #include // for struct sockaddr_in #include // for gethostbyname() struct sockaddr_in dest; struct in_addr in; struct hostent *phe; char host[1000]; int fd, port = 80; dest.sin_family=AF_INET; dest.sin_port = htons(port); if (phe = gethostbyname(host)) bcopy(phe->h_addr, (char *)&dest.sin_addr, phe- >h_length);

8 An Example BSD Socket Program – a simple client (2/2) – fd = socket(PF_INET, SOCK_STREAM, 0); in.s_addr = dest.sin_addr.s_addr; connect(fd, (struct sockaddr *)&dest, sizeof(dest)); send(fd, msg, strlen(msg), 0); … recv(fd, buf, sizeof(buf), 0); … close(fd);

9 Windows Socket WSAStartup(), WSACleanup() socket(), connect(), close() send(), recv() …

10 An Example WinSock Client (1/2) #include SOCKET fd; SOCKADDR_IN dest; WSADATA WSAdata; struct hostent FAR *ent; int port = 80; WSAStartup(0x1010, &WSAdata); fd = socket(PF_INET, SOCK_STREAM, 0); dest.sin_family = PF_INET; dest.sin_port = htons(port); ent = gethostbyname(hostname);

11 An Example WinSock Client (2/2) – connect(fd, (LPSOCKADDR)&dest, sizeof(SOCKADDR)); send(fd, msg, strlen(msg), 0); … recv(fd, buf, sizeof(buf), 0); … close(fd); WSACleanup();

12 Java Socket java.net.Socket –new –getInputStream –getOutputStream –close java.net.ServerSocket –new –accept –close

13 An Example Java Socket Client (1/2) import java.net.Socket; import java.net.InetSocketAddress; import java.io.BufferedOutputStream; import java.io.BufferedInputStream; public class SockClient { private String address = hostname; private int port = 80; public SockClient() { Socket client = new Socket(); InetSocketAddress isa = new InetSocketAddress(this.address, this.port);

14 An Example Java Socket Client (2/2) –try { client.connect(isa, 10000); BufferedOutputStream out = new BufferedOutputStream(client.getOutputStream()); BufferedInputStream out = new BufferedInputStream(client.getInputStream()); out.write(…); in.read(...); in.close(); out.close(); client.close(); } catch () { }

15 Response Parsing Protocol dependent –browser HTTP over TCP: connection-oriented Byte ordering Buffer management

16 Programming Exercises Packet sending/receiving –{Source, destination} (IP, port number) –Protocol A simple HTTP client –To get a Web page at any URL –To display the page content

17 Thanks for Your Attention!


Download ppt "Network Programming By J. H. Wang Nov. 21, 2011. Outline Introduction to network programming Socket programming –BSD Socket –WinSock –Java Socket Exercises."

Similar presentations


Ads by Google