Network Programming Project Report
Project Report 1155028688 Wang Cong Overview This project is a practice of Windows socket programming. In this program we need to complete the following things: 1. Establish a TCP connection to the server. 2. Create a TCP socket listening on a port for the ROBOT program. 3. Create a UDP socket for receiving packets 4. Send and receive messages via TCP sockets 5. Send and receive messages via UDP sockets 6. Compare the throughputs in different buffer sizes. This program is programmed by C++. Program Design I defined the following functions to complete the tasks: void OnError () This function is used to print an error message and call WSACleanup(). It is designed to simplify the clean-up steps when error occurred. * SOCKADDR_IN *CreateSocket (SOCKET &s, u_short port, int type = IPPROTO_TCP, bool isServer = false) This function will create a socket for TCP/UDP connection Parameters: s—-Reference to the socket port—-The port on which to create the connection type—-The connection type(TCP/UDP) isServer—-Set it true to establish a TCP server socket and make it to listen from the port, and false to establish a TCP client socket.
Return: return the SOCKADDR_IN pointer pointed to a SOCKADDR_IN object. NULL if any error occurred, and then the OnError() function will be called * Int sendTCP (SOCKET &s, const char *m) This function will send out a TCP message over the stream socket Parameters: s—-Reference to the socket m—-The message to be sent Return: SOCKET_ERROR if any error occurred. , else return bytes sent. * Int recvTCP (SOCKET &s, char *buffer, int len) This function will receive a TCP message from a stream socket Parameters: s—-Reference to the socket uffer—-The buffer to receive a message len—-The buffer length Return: SOCKET_ERROR if any error occurred or the buffer is a NULL pointer, else return bytes received These functions are designed in order to make the program more clearly. More detail is written in the program. Bonus Part: Testing The Relationship Between Throughput And Buffer Size Figure [ 1 ] Testing On Localhost Figure [ 2 ] Testing On 100M LAN Figure [ 3 ] Testing On 802. 11b Wireless Network We can see the following conclusions from the figures above: 1.
When testing on localhost, the throughput will increase when buffer size increases, and after a particular buffer size, the throughput will decrease 2. When testing on 100M LAN, the throughput will increase and approach the maximum speed(100Mbps) 3. When testing on Wireless Network, the throughput is relatively stable. Because the speed of wireless network is relatively slow. But the throughput is not reaching the highest speed, I think it is because of a higher delay than it was in LAN and localhost environment.