If you had written your own Internet browser program a few years ago, you
could have made a billion dollars by now. But these days, you can download
browsers for free, so it doesn't make sense to write one. It
does make sense, however, to add Internet access features to your Windows applications. Winsock is
not the best tool if you need HTTP or FTP access only, but it's a good learning tool.
The EX34A Winsock Client
The EX34A program implements a Winsock client in the file
\vcpp32\ex34a\ClientSockThread.cpp on the CD-ROM. The code is similar to the code
for the simplified HTTP client. The client thread uses global
variables set by the Configuration property sheet, including server filename,
server host name, server IP address and port, and client IP address. The client
IP address is necessary only if your computer supports multiple IP addresses.
When you run the client, it connects to the specified server and issues a GET
request for the file that you specified. The Winsock client logs error messages in
the EX34A main window.
EX34A Support for Proxy Servers
If your computer is connected to a LAN at work, chances are it's not exposed directly to the Internet but rather connected through a proxy server, sometimes called a firewall. There are two kinds of proxy servers: Web and Winsock. Web proxy servers, sometimes called CERN proxies, support only the HTTP, FTP, and gopher protocols. (The gopher protocol, which predates HTTP, allows character-mode terminals to access Internet files.) A Winsock client program must be specially adapted to use a Web proxy server. A Winsock proxy server is more flexible and thus can support protocols such as RealAudio. Instead of modifying your client program source code, you link to a special Remote Winsock DLL that can communicate with a Winsock proxy server.
The EX34A client code can communicate through a Web proxy if you check the Use Proxy check box in the Client Configuration page. In that case, you must know and enter the name of your proxy server. From that point on, the client code connects to the proxy server instead of to the real server. All GET and POST requests must then specify the full Uniform Resource Locator (URL) for the file.
If you were connected directly to SlowSoft's server, for example, your GET request might look like this:
GET /customers/newproducts.html HTTP/1.0
But if you were connected through a Web proxy server, the GET would look like this:
GET http://slowsoft.com/customers/newproducts.html HTTP/1.0
The easiest way to test the Winsock client is by using the built-in Winsock server. Just start the server as before, and then choose Request (Winsock) from the Internet menu. You should see some HTML code in a message box. You can also test the client against IIS, the server running in another EX34A process on the same computer, the EX34A server running on another computer on the Net, and an Internet server. Ignore the "Address" URL on the dialog bar for the time being; it's for one of the WinInet clients. You must enter the server name and filename in the Client page of the Configuration dialog.