Programming Winsock/Book and Disk

Free download. Book file PDF easily for everyone and every device. You can download and read online Programming Winsock/Book and Disk file PDF Book only if you are registered here. And also you can download or read online all Book PDF file that related with Programming Winsock/Book and Disk book. Happy reading Programming Winsock/Book and Disk Bookeveryone. Download file Free Book PDF Programming Winsock/Book and Disk at Complete PDF Library. This Book have some digital formats such us :paperbook, ebook, kindle, epub, fb2 and another formats. Here is The CompletePDF Book Library. It's free to register here to get Book file PDF Programming Winsock/Book and Disk Pocket Guide.

It is possible that when we send two packets one after another, the second packet may reach first. But, since our data has been sequentially numbered, the server will arrange our data in the correct order.

C++ Blocking Sockets Networking [Winsock] Tutorial 9: Accept & Connect

TCP is a decent protocol. It is not ill-behaved, unlike other protocols which we shall talk about later.

Programming Winsock/Book and Disk

The moment the client receives an ' Ack ' it means that the server has received a packet and responded with an ' Ack '. We - the client - have to first calculate the total round time i. Suppose we send a packet to the server and we receive an ' Ack ', 1 second later. After we keep sending packets for 15 minutes, at intervals of 1 second, we may suddenly realise that the server is now responding with the ' Ack ' every 2 seconds. This shows that there is now congestion on the line. So if we receive an ' Ack ' late, we also would be sending our packets late.

Get this edition

Let's assume another case where we are sending a packet to the server. This may be due to the reason that our packet has not reached the server.


  • WinInet | Programming Microsoft Visual C++.
  • Nutrition in Gastrointestinal and Liver Diseases (Special Issue: Digestive Diseases 2003, 3).
  • Test Your Vocabulary 5 Revised Edition.
  • LIBRARY OF CONGRESS DATA.
  • A Walking Tour of Camden, South Carolina (Look Up, America!).
  • Account Options.

It may also be due to the reason that the server may have sent an ' Ack ' but the ' Ack ' did not reach us. Because of this we have to set a retransmission timer which will inform us that it is time to retransmit a packet. It is possible that we may set the retransmission time too high and we may receive the ' Acks ' at a faster rate. For example, suppose we set our retransmission time to be 5 seconds and the server responds with an ' Ack ' within 2 seconds.

Then we are wasting 3 seconds needlessly. Hence we have to dynamically reset our timer to 2 seconds. If we set the timer for a short retransmission time, it is possible that we may receive an ' Ack ' after we have retransmitted the packet. For example, if we set our retransmission time to 1 seconds and the server responds with an ' Ack ' after 2 seconds. Then we are retransmitting the first packet without waiting for a reasonable time for the ' Ack ' to reach us. Hence we have to reset our timer to 2 seconds.

Even if the server received our duplicate packet it is intelligent enough to drop it. If this was the way the TCP worked, then it would make the whole process of transmission too slow and be more of a liability than an asset to the network. Slow, because the server would have to wait for an ' Ack ' from the client every time it sent some packets. To guard against the slowness of the protocol there is something in TCP known as the window size - which incidentally we had said would be explain later.

Well, the time has come when we feel that you should know what a window size means. Let us talk about a case where we are receiving data from a server. The server sets a limit to the number of bytes of data it can send us, without receiving an ' Ack ' from us. This maximum limit is known as the window size. It is not a constant figure, but may vary due to a number of factors like congestion, etc. The sever knows that he can keeping sending us data, he will not send us the th byte until we send him an ' Ack '.

This increases the rate of flow of data. Continuing with our client program..

Now don't you think that we have deviated from the main program for quite some time? Now in this program we have added some extra lines of code. There are now three more functions included in the program. It's the second and third functions which warrants explanation. The second function ' send ' takes four parameters. It also knows the IP address as well as the port number of the server - we are trying to connect to. The second parameter is the array in which we have stored the name of the file we want to obtain from that server.

You have to understand that when we say " GET " , it is a request to the server which it - the server - recognises. The third parameter is the size of the array which we want to send. The last parameter is ' 0 '. We have got a rule which says that. How do we go about receiving something from the server? This reception is possible through a function ' recv '.

This function is a blocking function. By blocking function, we mean that the function prevents the program from doing anything else, until the function has performed it's task completely.

Appendix E: WinSock Information Sources

This function returns the number of bytes it has received from the server. The first parameter is the variable ' s ' which knows the IP address of the server etc. The second parameter is an array. The contents of our requested file are read into this array. The third parameter specifies the number of bytes, upto which it can receive data from the server. By this, we mean that if the server sends us bytes, we can receive them. But the maximum number of bytes we can receive is only.

By specifying this parameter as , it does not mean that we are demanding that the server is to send us bytes only. There is no way we can make such a demand. By passing this parameter as , we are merely saying that we can, at one time, receive not more than bytes. The last variable again is ' 0 ' and hence unexplained. In this program, if we had just written the ' recv ' function as it is, what will it do if the file to be received from the server is larger than bytes?

We would only get the first bytes copied in our " b.

Change log

This is a problem which is solved for us by the server. When the server has finished sending the file, he sends this function a reset. When he sends this reset, one of the flags gets activated. Now run the program and take a look at our "b. It would now look as below. What is this? There is no change in the output in the " b. What is the use of these lines of code and the explanations given by us, if our Browser cannot get us a default file from the server we connected to?

Well this is a good question. This is the bare minimum requirement of the header which can be understood and accepted by the server. Well don't you have to tell the server that you have completed the transmission and that no more bytes are going to be transmitted as part of the header?

Internet Programming on CD-ROM

When you run this beautiful program which we wrote, you will see that it has stretched it's arm wide across the Internet and fetched us the default file from the server we connected to. We can now read the contents of that file in the " b. How do we know that the file we have received is an HTTP file? All these make up a protocol. This protocol is known as the Hyper Text Transfer Protocol. If you know the name of the file you want, just specify it's name in the request part of the header i.

This will get us the default file. The problem with servers is that though they all have a default file, they could not decide on the name to be used for the default file. One of the server may call it's default file as "index.

ISBN 13: 9780672305948

Now when we are connecting to a server, we do not know the name of it's default file. All that Netscape does, is convert this name into an IP address. It now uses the same code that we used, to connect to this server. There is no other way it can connect.


  • Back Cover.
  • Windows Sockets Network Programming (paperback);
  • See a Problem?.

The Netscape Browser then makes a fresh connection to Microsoft and gets this "a1. This means that other than this minor difference, Netscape is nothing but a Desk Top Publisher which gives your browser a colourful user-interface. That is the reason we do not think of Netscape as an Internet company. According to us, an Internet company is a company which knows Internet technologies. Otherwise, as we have written the code for getting a file from the server, we could also call ourselves an Internet company. Well how do you like our Browser? Don't you find it fascinating?

This browser also helps you to download from any site which your parents forbid you to visit. The best thing about this browser is that it stores the contents in " b. So, whenever you want to view this file you can view it, and whenever you are tired from viewing it you can delete this file and your parents are none the wiser to your shenanigans. Our work is obviously not complete with just helping you create a Browser. We decided that the next step will be to help you create a server.