Win32 Socket Client
  Socket programming in MFC is usually a bit messy. It's always clean and convenient to write the socket programs using Win32.

  A big advantage writing these programs in Win32 is, we can follow the same model as in any Unix C++ socket program. Also, with each and every new version of Winsock, we don't know how many bugs are going to get added to the development frameworks.

Anyway, now let's get down to business. This article does not try to cover all the minute details of winsock client programming, but for the basics. The relevant steps for creating a synchronous client socket are:

  1. Create a socket and get the handle
  2. Populate the SOCKADDR_IN structure with the Server IP and Port Number
  3. Connect using the connect function
  4. Send and Recv using the socket
  5. Shutdown and Close when all jobs are done

The following sample illustrates the above steps. Only one item missed out here is the usage of recv function.


#include <winsock2.h>
#include <iostream.h>
int gPort = 8780;
void main()
{
       SOCKET lhSocket;
       SOCKADDR_IN lSockAddr;
       WSADATA wsaData;
       int lConnect;
       int lLength;
       char lData[]="SendData";
       if(WSAStartup(MAKEWORD(2,0),&wsaData) != 0)
       {
            cout<<"Socket Initialization Error. Program aborted\n";
            return;
        }
       lhSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
       if(lhSocket == INVALID_SOCKET)
       {
            cout<<"Invalid Socket "<<GetLastError()<<". Program Aborted\n"<<endl;
        }
       memset(&lSockAddr,0, sizeof(lSockAddr));
       lSockAddr.sin_family = AF_INET;
       lSockAddr.sin_port = htons(gPort);
       lSockAddr.sin_addr.s_addr = inet_addr("IPAddress");
       lConnect = connect(lhSocket,(SOCKADDR *)&lSockAddr,sizeof(SOCKADDR_IN));
       if(lConnect != 0)
       {
             cout<<"Connect Error. Program aborted\n";
             return;
        }
       lLength = send(lhSocket,lData,strlen(lData),0);
       if(lLength < strlen(lData))
       {
            cout<<"Send Error.\n";
       }
       closesocket(lhSocket);
       return;
}


Note:
The socket programs in MFC need the library ws2_32.lib to be referenced before linking. Otherwise the VC++ linker throws errors.

 

Close    To Top
  • Prev Article-Programming:
  • Next Article-Programming:
  • Now: Tutorial for Web and Software Design > Programming > win32 > Programming Content
    Photoshop Tutorial
     

    Special Effect

      3D Effect
      Photoshop Articles
    Programming Tutorial
     

    C/C++ Tutorial

      Visual Basic
      C# Tutorial
    Database Tutorial
     

    MySQL Tutorial

      MS SQL Tutorial
      Oracle Tutorial
    Geek Tutorial
     

    Blogging Tutorial

      RSS Tutorial
      Podcasting Tutorial
    Graphic Design Tutorial
      Coreldraw Tutorial
      Illustrator Tutorial
      3D Tutorials
    Webmaster Articles
     

    Domain Service

      Web Hosting
      Site Promotion
    Java Tutorial/ Articles
     

    Java Servlets

      JavaEE Tutorial
     

    JavaBeans Tutorial

    XML Tutorial/ Articles
     

    XML Style

      AJAX Tutorial
      XML Mobile
    Flash Tutorial/ Articles
     

    Flash Video

      Action Script
      Flash Articles
    OS Tutorial/ Articles
      Linux Tutorial
      Symbian Tutorial
      MacOS Tutorial
    Personal Tech
      Hardware Tutorial
      Software Tutorial
      Online Auction