C-Scene Issue #2
The Wonderful world of Windows Sockets
The Wonderful World of Sockets
An MFC Prospective
I have been asked to write a short article, which would explain some of the
basics of sockets from a windows abuser prospective.If requests are sufficient,
I will even consider a short tutorial on how to implement the CSocket class
into a simple Internet application.
Socket: (sok`it), n., v., -n. 1. A hollow or concave part or piece that
contains or fits a complimentary part.
Just What is a Socket, Bob?
A socket, from an Internet prospective, is a piece of software that can both
send and receive data over a TCP/IP network. A socket needs to know the IP
address it is talking to, the port it is talking to at that address, and the
socket type. To accommodate this, MFC contains a set of functions designed
to handle this two-way communication. If you are to write Internet programs
for Windows, you must grasp the basic concepts of windows Sockets.
Porting isn't what you Think
A socket must be able to know what port it is talking to and at what address.
A port, in Internet lingo, is nothing more than a convention used by the
programs that are running on each of the communicating machines. These ports
do not represent actual hardware, such as your parallel port, nor does it
imply a port like one you would find for your modem. In fact, a port doesn't
even refer to any actual hardware at all. It is just a convenient number
scheme. Different Internet programs use different ports for their activities.
It is through these ports that Internet programs can be allowed to do many
different tasks at once. They are basically communicating on many different
ports at the same time.
Sorting your Sockets
There are two kinds of sockets: stream and datagram sockets. Stream sockets
involve consistent and lengthy data flow, such as one you would find in an FTP
transfer. A datagram socket involves much smaller volumes of data such as that
in a broadcast message application, where the machine initiates a connection,
sends data and terminates the connection.
Getting Windows Involved
Remember that a windows socket is a collection of functions, which deal with
communicating information over the many Internet protocols through the
Internet. The functions for socket can be located in a file called WSOCK32.DLL
(WINSOCK.DLL) under the Csocket class. Luckily for you, windows allows you to
call these socket functions from anywhere inside your windows program. Here is
a listing of the Berkley-Sockets functions. If you have programmed in the UNIX
environment, you will definitely find these functions familiar.
accept htonl, htons, ntohl, ntohs
bind inet_addr, inet_ntoa
getpeername recv, recvfrom
getsockname send, sendto
getsockopt, setsockopt shutdown
Since this is merely an introductory article on the world of sockets, I am not
going into any lengthy war stories about any of these functions. Please feel
free to utilize your online help in order to accommodate their usage.
Typing your Sockets
Because Windows programming is message based, it is asynchronous. That means
that things don't necessarily happen in order. Packets arrive all the times,
and in different order. Typical sockets programming, however, are synchronous.
If your program asks the socket to send some information, it will wait for a
reply. Because the multi-tasking nature of windows cannot wait for the
synchronous response of a typical socket, There must be a method to apply the
synchronous behaviour of sockets to the asynchronous world of windows.
Confused yet? Great!
As you can tell, most of these functions are renamed versions of the common
UNIX socket functions. They are merely the asynchronous versions. Again, feel
free to take a quick look through your online help in order to get a grasp of
At a Stab
From a stab, we have learned a bit about sockets and how they apply to Windows.
We found out that MFC includes several functions to deal with most aspects of
sockets programming and concluded with several MFC based functions that
incorporate the MFC class CSocket. If you would like more information about
building your own internet applications, I highly recommend the book from which
I based this information from titled "Building Internet Applications with
Visual C++" written by Kate Gregory, published by QUE books
(ISBN:0-7897-0213-4) I found it to be an indispensable guide in my quest for
writing Internet applications.
C Scene Official Web Site :
C Scene Official Email :
This page is Copyright © 1997 By
C Scene. All Rights Reserved