Download presentation
Presentation is loading. Please wait.
Published byKristian Barnett Modified over 8 years ago
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!
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.