C++ Server und Client

Hallo,

eig. müsste es unter Windows doch möglich sein mithilfe einer in c++ erstellten Datei Daten zwischen dem PC auf dem das Programm gestartet wurde und einem zweiten auszutauschen?

Hat hierfür jmd. ein Codebeispiel?
Oder eine einfache Erklärung??

Ein kleines Chatprogramm, das auch Dateiversand ermöglicht würde vollkommen reichen.

Ich habe bereits gehört, dass es über WinSocks funktionieren soll, aber was wirklich brauchbares (für mich =D) hab ich leider nicht gefunden.

Das hier ist meine letzt Hoffnung ^^

Bis jetzt habe ich nur Erfahrung in relativ einfachen C++ Angelegenheiten.
 
Winsock Tutorials

---

Nutzt man heutzutage von Hand aber weniger. Da nimmt man je nach Szenario was RPC-mäßiges (SOAP z.B.) oder Protokollbaukästen... REST wäre z.B. auch recht verbreitet. Für P2P Szenarien gibts auch irgendeine Baukastenlib...
 
WinSocket

Hallo,

leider gibt es in der C++ Standard-Bibliothek und auch im Sprachumfang keine Klassen oder Befehle, mit denen Socket-Verbindungen aufgebaut werden können. Hier ist man leider auf zusätzliche, Systemspezifische Bibliotheken wie die MFC oder die Win32 API angewiesen, oder man kauft kommerziele Bibliotheken zu. Daher gibt es keine Standard-Klassen oder Funktionen, die Systemübergreifend verwendet werden können, jedenfalls nichts was im C++ Standard definiert wäre. Schau mal unter www.boost.org nach, dort werden Bibliotheken für verschiedene Plattformen kostenlos angeboten.

Unter Windows könntest du z.B. mit der MFC wie folgt vorgehen:

Server side: SockServer.h
Code:
[FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]
/*
Windows Systemprogrammierung mit C++

Socket Programmierung mit winsock funktionen

Programm SocketServer

Copyright 2007: Hilf! GmbH
Autor: Gerhard Biebl
*/
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]#pragma[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]once
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]#include[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"resource.h"
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]#include[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]<winsock2.h>
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]#include[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]<iostream>
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]using[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]namespace[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] std;
WSADATA WSAData;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]/*
// Definition:
struct WSAData 
{
WORD wVersion;
WORD wHighVersion;
char szDescription[WSADESCRIPTION_LEN+1];
char szSystemStatus[WSASYSSTATUS_LEN+1];
unsigned short iMaxSockets;
unsigned short iMaxUdpDg;
char FAR * lpVendorInfo;
};
*/
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]enum[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] { BuffSize=255 };
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] sizeofSockAddr = [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]sizeof[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4](sockaddr_in);
sockaddr_in IPAddress;
sockaddr address;
sockaddr_in PeerSockAddr;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]char[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]* pBuff = [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]new[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]char[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][BuffSize];
SOCKET actualSocket;
SOCKET Connection;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]/*
// global structure for socket addresses, used by most address families
struct sockaddr {
u_short sa_family; // address family
char sa_data[14]; // up to 14 bytes of direct address
};
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// special structure for TCP/IP addresses ( Server side )
struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
struct in_addr 
{
union 
{
struct { u_char s_b1,
s_b2,
s_b3,
s_b4; } S_un_b;
struct { u_short s_w1,
s_w2; } S_un_w;
u_long S_addr;
} S_un;
s_addr S_un.S_addr // can be used for most tcp & ip code
s_host S_un.S_un_b.s_b2 // host on imp
s_net S_un.S_un_b.s_b1 // network
s_imp S_un.S_un_w.s_w2 // imp
s_impno S_un.S_un_b.s_b4 // imp #
s_lh S_un.S_un_b.s_b3 // logical host

*/
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// function prototypes
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]SOCKET InitSocket();
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]bool[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] bindSocket ( SOCKET actualSocket, [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] Port );
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]bool[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] listenSocket ( SOCKET actualSocket, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] number );
SOCKET acceptSocket ( SOCKET actualSocket );
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] receiveSocket ( SOCKET actualSocket, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]char[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]* pBuf, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] BufLen );
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] sendSocket ( SOCKET actualSocket, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]char[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]* pBuf, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] BufLen );
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]bool[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] closeSocket ( SOCKET actualSocket );
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ErrorHandler ( [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]void[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] );
[/SIZE][/FONT][/SIZE][/FONT]

SockServer.cpp:
Code:
[FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]
// WinSockets.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]#include[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"stdafx.h"
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]#include[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"SockServer.h"
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]#ifdef[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] _DEBUG
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]#define[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]new[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] DEBUG_NEW
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]#endif
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Das einzige Anwendungsobjekt
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]CWinApp theApp;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]using[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]namespace[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] std;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] _tmain([/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] argc, TCHAR* argv[], TCHAR* envp[])
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] nRetCode = 0;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// MFC initialisieren und drucken. Bei Fehlschlag Fehlermeldung aufrufen.
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// TODO: Den Fehlercode an Ihre Anforderungen anpassen.
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]_tprintf(_T([/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Schwerwiegender Fehler bei der MFC-Initialisierung\n"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]));
nRetCode = 1;
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]else
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// TODO: Hier den Code für das Verhalten der Anwendung schreiben.
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]cout << [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Welcome to SocketServer !"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] << endl;
cout << [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"========================="[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] << endl;
cout << endl;

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// establish Socket
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]actualSocket = InitSocket();
cout << [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket successfully established!"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] << endl;

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// bind Socket
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( bindSocket( actualSocket, 6666 ) )
cout << [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket bound!"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] << endl;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]else
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]cout << [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"bind failed !"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] << endl;

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// listen 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( listenSocket( actualSocket, 0 ) )
cout << [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"listen executed on Socket"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] << endl;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]else
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]cout << [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"listen failed!"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] << endl;

cout << [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"waiting for incoming connection ..."[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] << endl;

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// wait for client to aquire a new connection
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]memset ( pBuff, 0, BuffSize );
Connection = INVALID_SOCKET;
Connection = acceptSocket( actualSocket );

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// security check: Is the connection valid ?
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( Connection != INVALID_SOCKET )
{
cout << [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Connection to client established"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] << endl;

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// in real life, every new Connection would be passed 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// to a new Thread in order to enable the base socket server
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// to wait for other incoming connection requests
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// this little example is single- Thread only, so we can
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// just handle one connection at a time !
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Connection established, client ante portas
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]memcpy( pBuff, [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Welcome to the TCP Socket Host !"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], BuffSize );
sendSocket ( Connection, pBuff, strlen( pBuff) );

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]while[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]([/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]true[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4])
{
memset ( pBuff, 0, 255 );
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( receiveSocket ( Connection, pBuff, BuffSize ) == 0 )
{
cout << [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Error receiving data"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] << endl;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( strcmp ( pBuff, [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Bye"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ) == 0 )
{
cout << [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Client shutting down"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] << endl;
memset ( pBuff, 0, 255 );
memcpy( pBuff, [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"I see you !"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], BuffSize );
sendSocket ( Connection, pBuff, strlen( pBuff) );
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}
cout << [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Client: "[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] << pBuff << endl;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( sendSocket ( Connection, pBuff, strlen( pBuff) ) == 0 )
{
cout << [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Error sending data"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] << endl;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
};

}
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]else
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]cout << [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Connection failed!"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] << endl;

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// everything done, shutdown
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( Connection != INVALID_SOCKET )
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( closeSocket( Connection ) )
cout << [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Connection Socket closed"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] << endl;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]else
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]cout << [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Connection Socket close failed!"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] << endl;
} 

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( closeSocket( actualSocket ) )
cout << [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Application Socket closed"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] << endl;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]else
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]cout << [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Application socket close failed!"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] << endl;

WSACleanup();
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] nRetCode;
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Implementierung der Socket-Funktionen
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Initialize an IrDA Socket with standard options
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]SOCKET InitSocket()
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Initialize Winsock.dll
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]//DebugBreak();
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( WSAStartup ( MAKEWORD(1,1), &WSAData ) != 0 )
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Error initializing Winsock.dll
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]ErrorHandler();
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] NULL;
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// clean up after successful init
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]//WSACleanup();
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Ok, Winsock dll initialized, proceed
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]//DebugBreak();
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// initialize Server Socket
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]//DebugBreak();
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]SOCKET ServSock = socket( AF_INET, [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// address family
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]SOCK_STREAM, [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Socket type 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]IPPROTO_TCP [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Protocol
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]);
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]/*
// invalid return values
INVALID_SOCKET (SOCKET)(~0)
SOCKET_ERROR (-1)
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Socket Types
SOCK_STREAM 1 // stream socket
SOCK_DGRAM 2 // datagram socket
SOCK_RAW 3 // raw-protocol interface
SOCK_RDM 4 // reliably-delivered message
SOCK_SEQPACKET 5 // sequenced packet stream
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// AF_INET address family protocol options from winsock2.h
IPPROTO_IP 0 // dummy for IP
IPPROTO_HOPOPTS 0 // IPv6 hop-by-hop options
IPPROTO_ICMP 1 // control message protocol
IPPROTO_IGMP 2 // internet group management protocol
IPPROTO_GGP 3 // gateway^2 (deprecated)
IPPROTO_IPV4 4 // IPv4
IPPROTO_TCP 6 // tcp
IPPROTO_PUP 12 // pup
IPPROTO_UDP 17 // user datagram protocol
IPPROTO_IDP 22 // xns idp
IPPROTO_IPV6 41 // IPv6
IPPROTO_ROUTING 43 // IPv6 routing header
IPPROTO_FRAGMENT 44 // IPv6 fragmentation header
IPPROTO_ESP 50 // IPsec ESP header
IPPROTO_AH 51 // IPsec AH
IPPROTO_ICMPV6 58 // ICMPv6
IPPROTO_NONE 59 // IPv6 no next header
IPPROTO_DSTOPTS 60 // IPv6 destination options
IPPROTO_ND 77 // UNOFFICIAL net disk proto
IPPROTO_ICLFXBM 78
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]IPPROTO_RAW 255 // raw IP packet
IPPROTO_MAX 256
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Protocol families, same as address families for now.
// except for AF_IrDA
AF_UNSPEC 0 // unspecified
AF_UNIX 1 // local to host (pipes, portals)
AF_INET 2 // internetwork: UDP, TCP, etc.
AF_IMPLINK 3 // arpanet imp addresses
AF_PUP 4 // pup protocols: e.g. BSP
AF_CHAOS 5 // mit CHAOS protocols
AF_IPX 6 // IPX and SPX
AF_NS 6 // XEROX NS protocols
AF_ISO 7 // ISO protocols
AF_OSI AF_ISO // OSI is ISO
AF_ECMA 8 // european computer manufacturers
AF_DATAKIT 9 // datakit protocols
AF_CCITT 10 // CCITT protocols, X.25 etc
AF_SNA 11 // IBM SNA
AF_DECnet 12 // DECnet
AF_DLI 13 // Direct data link interface
AF_LAT 14 // LAT
AF_HYLINK 15 // NSC Hyperchannel
AF_APPLETALK 16 // AppleTalk
AF_NETBIOS 17 // NetBios-style addresses
AF_VOICEVIEW 18 // VoiceView
AF_FIREFOX 19 // FireFox
AF_UNKNOWN1 20 // Somebody is using this!
AF_BAN 21 // Banyan

AF_MAX 22

AF_IRDA 26 // 32 Bit IrDA, address family only
*/
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( ServSock == INVALID_SOCKET )
{
ErrorHandler();
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] NULL;
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// set some socket options
/* 
if ( setsockopt( ServSock, // Socket
SOL_IRLMP, // option level
IRLMP_IAS_SET, // option name
(const char*) pIASSet, // option value
IASSetLen // value len
) == SOCKET_ERROR )
{
ErrorHandler();
return NULL;
}
if ( setsockopt( ServSock, // Socket
SOL_IRLMP, // option level
IRLMP_9WIRE_MODE, // option name
(const char*) &Enable9WireMode, // option value
sizeof(int) // value len
) == SOCKET_ERROR )
{
ErrorHandler();
return NULL;
}

*/
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]/*
// usage:
int PASCAL FAR setsockopt (
IN SOCKET s,
IN int level,
IN int optname,
IN const char FAR * optval,
IN int optlen);
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// option level IrDA
SOL_IRLMP 0x00FF
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]//Option names for use with [gs]etsockopt at the IP level.
IP_OPTIONS 1 // set/get IP per-packet options
IP_MULTICAST_IF 2 // set/get IP multicast interface
IP_MULTICAST_TTL 3 // set/get IP multicast timetolive
IP_MULTICAST_LOOP 4 // set/get IP multicast loopback
IP_ADD_MEMBERSHIP 5 // add an IP group membership
IP_DROP_MEMBERSHIP 6 // drop an IP group membership
IP_TTL 7 // set/get IP Time To Live
IP_TOS 8 // set/get IP Type Of Service
IP_DONTFRAGMENT 9 // set/get IP Don't Fragment flag
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// option names for IrDA
IRLMP_ENUMDEVICES 0x00000010
IRLMP_IAS_SET 0x00000011
IRLMP_IAS_QUERY 0x00000012
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// for options on other protocols, refer to the BSD file sys/socket.h
*/[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] 

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ServSock;
} [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// end of function InitIrDASocket
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]bool[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] bindSocket ( SOCKET Socket, [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] Port )
{
IPAddress.sin_family = AF_INET;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// htons converts a u_short from host to 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// TCP/IP network byte order, which is big-endian.
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]IPAddress.sin_port = htons( Port );
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// htonl converts a u_long from host to 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// TCP/IP network byte order, which is big-endian.
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]IPAddress.sin_addr.S_un.S_addr = htonl( INADDR_ANY );
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]//IPAddress.sin_addr.S_un.S_addr = htonl( 172016000179 ); // 172.16.0.179 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]//IPAddress.sin_addr.S_un.S_addr = htonl( 0xAC1000B3 ); // 172.16.0.179 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]//IPAddress.sin_addr.S_un.S_addr = inet_addr( "172.16.0.179" ); 
/*
INADDR_ANY (u_long) 0x00000000
INADDR_LOOPBACK 0x7f000001
INADDR_BROADCAST (u_long) 0xffffffff
INADDR_NONE 0xffffffff
*/
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// bind socket to address
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( bind ( Socket, [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Socket 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]([/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]const[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] sockaddr*) &IPAddress, [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Socket address
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]sizeof[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4](IPAddress) ) == SOCKET_ERROR )
{
ErrorHandler();
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]false[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]true[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];

} [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// end of function bindIrDASocket
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]bool[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] listenSocket ( SOCKET Socket, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] number )
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( listen ( Socket, 
number 
) == SOCKET_ERROR )
{
ErrorHandler();
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]false[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]true[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];

} [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// end of function listenIrDASocket
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]SOCKET acceptSocket ( SOCKET Socket )
{
SOCKET Connection = accept ( Socket,
(sockaddr*) &PeerSockAddr, [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Socket address
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]&sizeofSockAddr );
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] Connection; 

} [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// end of function acceptIrDASocket
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] receiveSocket ( SOCKET Socket, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]char[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]* pBuf, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] BufLen )
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] number = 0;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// receiving data
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( ( number = recv ( Socket, 
pBuff, 
BufLen, 
0 ) ) == SOCKET_ERROR )
{
ErrorHandler();
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] 0;
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] number;

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]/*
int PASCAL FAR recv (
IN SOCKET s,
OUT char FAR * buf,
IN int len,
IN int flags);
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// send / receive flags:
FD_READ 0x01
FD_WRITE 0x02
FD_OOB 0x04
FD_ACCEPT 0x08
FD_CONNECT 0x10
FD_CLOSE 0x20
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]*/
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]
} [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// end of function receiveIrDASocket
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] sendSocket ( SOCKET Socket, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]char[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]* pBuf, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] BufLen )
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] number = 0;

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// sending data
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( ( number = send ( Socket, 
pBuff, 
BufLen, 
0 ) ) == SOCKET_ERROR )
{
ErrorHandler();
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] 0;
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] number;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]/*
int PASCAL FAR send (
IN SOCKET s,
IN const char FAR * buf,
IN int len,
IN int flags);

// send / receive flags:
FD_READ 0x01
FD_WRITE 0x02
FD_OOB 0x04
FD_ACCEPT 0x08
FD_CONNECT 0x10
FD_CLOSE 0x20
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]*/
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]
} [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// end of function sendIrDASocket
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]bool[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] closeSocket ( SOCKET Socket )
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( closesocket ( Socket ) == SOCKET_ERROR )
{
ErrorHandler();
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]false[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]true[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// ErrorHandler Function
// 
// get the errornumber of the last error and provide
// an appropriate errormessage
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ErrorHandler ( [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]void[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] )
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] error = WSAGetLastError();

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// error dispatch
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]switch[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( error )
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] SOCKET_ERROR:
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSANOTINITIALISED:
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// A successful WSAStartup call must occur before using this function.
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"WSAStartup failed"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAENETDOWN: 
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The network subsystem has failed. 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Network failed"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAEFAULT:
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The buf parameter is not completely contained in a valid 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// part of the user address space. 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Buffer fault"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAENOTCONN: 
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The socket is not connected. 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket not connected"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAEINTR:
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The socket was closed. 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket closed"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAEINPROGRESS:
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// A blocking Winsock call is in progress, or the service 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// provider is still processing a callback function. 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket busy"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAENETRESET: 
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The connection has been broken due to the keep-alive 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// activity detecting a failure while the operation was in progress. 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Connection broken"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAENOTSOCK: 
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The descriptor is not a socket. 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"invalid Socket"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAEOPNOTSUPP: 
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// MSG_OOB was specified, but the socket is not stream 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// style such as type SOCK_STREAM, out of band (OOB) 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// data is not supported in the communication domain 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// associated with this socket, or the socket is 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// unidirectional and supports only send operations.
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"OOB not supported"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAESHUTDOWN: 
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The socket has been shut down; it is not possible 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// to receive on a socket after shutdown has been 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// invoked with how set to SD_RECEIVE or SD_BOTH. 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket has been shut down"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAEWOULDBLOCK: 
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The socket is marked as nonblocking and the 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// receive operation would block. 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"blocking disabled"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAEMSGSIZE: 
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The message was too large to fit into the 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// specified buffer and was truncated.
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Message too large"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAEINVAL: 
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The socket has not been bound with bind 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// (Windows Sockets), an unknown flag was 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// specified, MSG_OOB was specified for a 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// socket with SO_OOBINLINE enabled, or 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// (for byte stream sockets only) 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// len was zero or negative. 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket unbound or invalid Flag"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAECONNABORTED: 
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The virtual circuit was terminated due to a 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// time-out or other failure. The application 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// should close the socket as it is no longer usable. 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket terminated"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAETIMEDOUT: 
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The connection has been dropped because of 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// a network failure or because the peer system 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// failed to respond. 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Connection dropped"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAECONNRESET: 
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The virtual circuit was reset by the remote 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// side executing a hard or abortive close. 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The application should close the socket 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// because it is no longer usable.
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Connection broken from remote"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]default[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]:
{
MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"unknown error cause"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}
} [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// end of switch ( error )
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] error;
} [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// end of ErrorHandler function
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] 
[/SIZE][/FONT][/SIZE][/FONT]

Client Side: SockClient.h
Code:
[FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]
/*
Windows Systemprogrammierung mit C++

Socket Programmierung mit winsock funktionen

Programm SocketClient

Copyright 2007: Hilf! GmbH
Autor: Gerhard Biebl
*/
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]#pragma[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]once
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]#include[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"resource.h"
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]#include[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]<winsock2.h>
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]#include[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]<iostream>
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]using[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]namespace[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] std;
WSADATA WSAData;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]/*
// Definition:
struct WSAData 
{
WORD wVersion;
WORD wHighVersion;
char szDescription[WSADESCRIPTION_LEN+1];
char szSystemStatus[WSASYSSTATUS_LEN+1];
unsigned short iMaxSockets;
unsigned short iMaxUdpDg;
char FAR * lpVendorInfo;
};
*/
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]enum[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] { BuffSize=255 };
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] sizeofSockAddr = [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]sizeof[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4](sockaddr_in);
sockaddr_in IPAddress;
sockaddr_in PeerSockAddr;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]char[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]* pBuff = [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]new[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]char[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][BuffSize];
SOCKET actualSocket;
SOCKET Connection;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]/*
// global structure for socket addresses, used by most address families
struct sockaddr {
u_short sa_family; // address family
char sa_data[14]; // up to 14 bytes of direct address
};
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// special structure for TCP/IP addresses ( Server side )
struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
struct in_addr 
{
union 
{
struct { u_char s_b1,
s_b2,
s_b3,
s_b4; } S_un_b;
struct { u_short s_w1,
s_w2; } S_un_w;
u_long S_addr;
} S_un;
s_addr S_un.S_addr // can be used for most tcp & ip code
s_host S_un.S_un_b.s_b2 // host on imp
s_net S_un.S_un_b.s_b1 // network
s_imp S_un.S_un_w.s_w2 // imp
s_impno S_un.S_un_b.s_b4 // imp #
s_lh S_un.S_un_b.s_b3 // logical host

*/
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// function prototypes
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]SOCKET InitSocket();
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]bool[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] bindSocket ( SOCKET actualSocket );
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]bool[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] listenSocket ( SOCKET actualSocket, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] number );
SOCKET acceptSocket ( SOCKET actualSocket );
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] receiveSocket ( SOCKET actualSocket, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]char[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]* pBuf, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] BufLen );
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] sendSocket ( SOCKET actualSocket, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]char[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]* pBuf, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] BufLen );
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]bool[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] closeSocket ( SOCKET actualSocket );
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ErrorHandler ( [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]void[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] );
[/SIZE][/FONT][/SIZE][/FONT]

Client side: SockClient.cpp
Code:
[FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]
// SockClient.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]#include[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"stdafx.h"
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]#include[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"SockClient.h"
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]#ifdef[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] _DEBUG
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]#define[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]new[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] DEBUG_NEW
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]#endif
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Das einzige Anwendungsobjekt
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]CWinApp theApp;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]using[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]namespace[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] std;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] _tmain([/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] argc, TCHAR* argv[], TCHAR* envp[])
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] nRetCode = 0;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// MFC initialisieren und drucken. Bei Fehlschlag Fehlermeldung aufrufen.
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// TODO: Den Fehlercode an Ihre Anforderungen anpassen.
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]_tprintf(_T([/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Schwerwiegender Fehler bei der MFC-Initialisierung\n"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]));
nRetCode = 1;
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]else
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// TODO: Hier den Code für das Verhalten der Anwendung schreiben.
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]actualSocket = INVALID_SOCKET;

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( ( actualSocket = InitSocket() ) != INVALID_SOCKET )
cout << [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket sucessfully established!"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] << endl;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]else
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]cout << [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"failed to establish socket"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] << endl;

IPAddress.sin_family = AF_INET;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// htons converts a u_short from host to 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// TCP/IP network byte order, which is big-endian.
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]IPAddress.sin_port = htons(6666); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// htonl converts a u_long from host to 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// TCP/IP network byte order, which is big-endian.
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]IPAddress.sin_addr.S_un.S_addr = htonl( INADDR_LOOPBACK );
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]//IPAddress.sin_addr.S_un.S_addr = htonl( 172016000179 ); // 172.16.0.179 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]//IPAddress.sin_addr.S_un.S_addr = htonl( 0xAC1000B3 ); // 172.16.0.179 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]/*
INADDR_ANY (u_long) 0x00000000 0.0.0.0
INADDR_LOOPBACK 0x7f000001 127.0.0.1
INADDR_BROADCAST (u_long) 0xffffffff 255.255.255.255
INADDR_NONE 0xffffffff
*/
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]cout << [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Connecting to Host ..."[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] << endl;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( connect ( actualSocket, 
([/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]const[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] sockaddr*) &IPAddress, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]sizeof[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]( sockaddr ) ) != SOCKET_ERROR )
{
cout << [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]" done !"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] << endl;

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Connected to Host, dialog
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]memset ( pBuff, 0, BuffSize );
receiveSocket ( actualSocket, pBuff, BuffSize );
cout << [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Server: "[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] << pBuff << endl;
memset ( pBuff, 0, BuffSize );
strcpy( pBuff, [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Hello from Client !"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] );
sendSocket ( actualSocket, pBuff, strlen( pBuff) );

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]while[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]([/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]true[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4])
{
memset ( pBuff, 0, BuffSize );
receiveSocket ( actualSocket, pBuff, BuffSize );
cout << [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Server: "[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] << pBuff << endl;
memset ( pBuff, 0, 255 );
cin >> pBuff;
sendSocket ( actualSocket, pBuff, strlen( pBuff) );
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( strcmp( pBuff, [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Bye"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ) == 0 )
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];

}
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]else
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]cout << [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]" failed !"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] << endl;

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( closeSocket( actualSocket ) )
cout << [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket closed"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] << endl;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]else
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]cout << [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"close failed"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] << endl;
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] nRetCode;
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Implementierung der Socket-Funktionen
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Initialize an IrDA Socket with standard options
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]SOCKET InitSocket()
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Initialize Winsock.dll
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]//DebugBreak();
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( WSAStartup ( MAKEWORD(1,1), &WSAData ) != 0 )
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Error initializing Winsock.dll
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]ErrorHandler();
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] NULL;
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// clean up after successful init
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]//WSACleanup();
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Ok, Winsock dll initialized, proceed
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]//DebugBreak();
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// initialize Server Socket
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]//DebugBreak();
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]SOCKET ServSock = socket( AF_INET, [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// address family
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]SOCK_STREAM, [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Socket type 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]IPPROTO_TCP [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Protocol
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]);
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]/*
// invalid return values
INVALID_SOCKET (SOCKET)(~0)
SOCKET_ERROR (-1)
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Socket Types
SOCK_STREAM 1 // stream socket
SOCK_DGRAM 2 // datagram socket
SOCK_RAW 3 // raw-protocol interface
SOCK_RDM 4 // reliably-delivered message
SOCK_SEQPACKET 5 // sequenced packet stream
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// AF_INET address family protocol options
IPPROTO_IP 
IPPROTO_IPV6 
IPPROTO_RAW 
IPPROTO_TCP 
IPPROTO_UDP 
SOL_SOCKET 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Protocol families, same as address families for now.
// except for AF_IrDA
AF_UNSPEC 0 // unspecified
AF_UNIX 1 // local to host (pipes, portals)
AF_INET 2 // internetwork: UDP, TCP, etc.
AF_IMPLINK 3 // arpanet imp addresses
AF_PUP 4 // pup protocols: e.g. BSP
AF_CHAOS 5 // mit CHAOS protocols
AF_IPX 6 // IPX and SPX
AF_NS 6 // XEROX NS protocols
AF_ISO 7 // ISO protocols
AF_OSI AF_ISO // OSI is ISO
AF_ECMA 8 // european computer manufacturers
AF_DATAKIT 9 // datakit protocols
AF_CCITT 10 // CCITT protocols, X.25 etc
AF_SNA 11 // IBM SNA
AF_DECnet 12 // DECnet
AF_DLI 13 // Direct data link interface
AF_LAT 14 // LAT
AF_HYLINK 15 // NSC Hyperchannel
AF_APPLETALK 16 // AppleTalk
AF_NETBIOS 17 // NetBios-style addresses
AF_VOICEVIEW 18 // VoiceView
AF_FIREFOX 19 // FireFox
AF_UNKNOWN1 20 // Somebody is using this!
AF_BAN 21 // Banyan

AF_MAX 22

AF_IRDA 26 // 32 Bit IrDA, address family only
*/
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( ServSock == INVALID_SOCKET )
{
ErrorHandler();
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] NULL;
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// set some socket options
/* 
if ( setsockopt( ServSock, // Socket
SOL_IRLMP, // option level
IRLMP_IAS_SET, // option name
(const char*) pIASSet, // option value
IASSetLen // value len
) == SOCKET_ERROR )
{
ErrorHandler();
return NULL;
}
if ( setsockopt( ServSock, // Socket
SOL_IRLMP, // option level
IRLMP_9WIRE_MODE, // option name
(const char*) &Enable9WireMode, // option value
sizeof(int) // value len
) == SOCKET_ERROR )
{
ErrorHandler();
return NULL;
}

*/
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]/*
// usage:
int PASCAL FAR setsockopt (
IN SOCKET s,
IN int level,
IN int optname,
IN const char FAR * optval,
IN int optlen);
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// option level IrDA
SOL_IRLMP 0x00FF
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]//Option names for use with [gs]etsockopt at the IP level.
IP_OPTIONS 1 // set/get IP per-packet options
IP_MULTICAST_IF 2 // set/get IP multicast interface
IP_MULTICAST_TTL 3 // set/get IP multicast timetolive
IP_MULTICAST_LOOP 4 // set/get IP multicast loopback
IP_ADD_MEMBERSHIP 5 // add an IP group membership
IP_DROP_MEMBERSHIP 6 // drop an IP group membership
IP_TTL 7 // set/get IP Time To Live
IP_TOS 8 // set/get IP Type Of Service
IP_DONTFRAGMENT 9 // set/get IP Don't Fragment flag
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// option names for IrDA
IRLMP_ENUMDEVICES 0x00000010
IRLMP_IAS_SET 0x00000011
IRLMP_IAS_QUERY 0x00000012
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// for options on other protocols, refer to the BSD file sys/socket.h
*/[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] 

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ServSock;
} [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// end of function InitIrDASocket
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]bool[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] bindSocket ( SOCKET Socket )
{
IPAddress.sin_family = AF_INET;
IPAddress.sin_port = htons( 6666 );
in_addr IAddress;
IAddress.S_un.S_addr = htonl( INADDR_ANY );
IPAddress.sin_addr = IAddress; 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]/*
INADDR_ANY (u_long) 0x00000000
INADDR_LOOPBACK 0x7f000001
INADDR_BROADCAST (u_long) 0xffffffff
INADDR_NONE 0xffffffff
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]struct in_addr {
union {
struct { u_char s_b1,
s_b2,
s_b3,
s_b4; } S_un_b;
struct { u_short s_w1,
s_w2; } S_un_w;
u_long S_addr;
} S_un;
s_addr S_un.S_addr // can be used for most tcp & ip code
s_host S_un.S_un_b.s_b2 // host on imp
s_net S_un.S_un_b.s_b1 // network
s_imp S_un.S_un_w.s_w2 // imp
s_impno S_un.S_un_b.s_b4 // imp #
s_lh S_un.S_un_b.s_b3 // logical host

};
*/
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// bind socket to address
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( bind ( Socket, [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Socket 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]([/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]const[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] sockaddr*) &IPAddress, [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Socket address
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]sizeof[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4](IPAddress)
) == SOCKET_ERROR )
{
ErrorHandler();
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]false[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]true[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];

} [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// end of function bindIrDASocket
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]bool[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] listenSocket ( SOCKET Socket, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] number )
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( listen ( Socket, 
number 
) == SOCKET_ERROR )
{
ErrorHandler();
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]false[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]true[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];

} [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// end of function listenIrDASocket
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]SOCKET acceptSocket ( SOCKET Socket )
{
SOCKET Connection = accept ( Socket,
(sockaddr*) &PeerSockAddr, [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// Socket address
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]&sizeofSockAddr );
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] Connection; 

} [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// end of function acceptIrDASocket
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] receiveSocket ( SOCKET Socket, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]char[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]* pBuf, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] BufLen )
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] number = 0;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// receiving data
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( ( number = recv ( Socket, 
pBuff, 
BufLen, 
0 ) ) == SOCKET_ERROR )
{
ErrorHandler();
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] 0;
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] number;

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]/*
int PASCAL FAR recv (
IN SOCKET s,
OUT char FAR * buf,
IN int len,
IN int flags);
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// send / receive flags:
FD_READ 0x01
FD_WRITE 0x02
FD_OOB 0x04
FD_ACCEPT 0x08
FD_CONNECT 0x10
FD_CLOSE 0x20
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]*/
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]
} [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// end of function receiveIrDASocket
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] sendSocket ( SOCKET Socket, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]char[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]* pBuf, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] BufLen )
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] number = 0;

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// sending data
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( ( number = send ( Socket, 
pBuff, 
BufLen, 
0 ) ) == SOCKET_ERROR )
{
ErrorHandler();
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] 0;
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] number;
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]/*
int PASCAL FAR send (
IN SOCKET s,
IN const char FAR * buf,
IN int len,
IN int flags);

// send / receive flags:
FD_READ 0x01
FD_WRITE 0x02
FD_OOB 0x04
FD_ACCEPT 0x08
FD_CONNECT 0x10
FD_CLOSE 0x20
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]*/
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]
} [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// end of function sendIrDASocket
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]bool[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] closeSocket ( SOCKET Socket )
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( closesocket ( Socket ) == SOCKET_ERROR )
{
ErrorHandler();
WSACleanup();
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]false[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}
WSACleanup();
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]true[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// ErrorHandler Function
// 
// get the errornumber of the last error and provide
// an appropriate errormessage
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ErrorHandler ( [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]void[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] )
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] error = WSAGetLastError();

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// error dispatch
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]switch[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] ( error )
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] SOCKET_ERROR:
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSANOTINITIALISED:
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// A successful WSAStartup call must occur before using this function.
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"WSAStartup failed"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAENETDOWN: 
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The network subsystem has failed. 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Network failed"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAEFAULT:
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The buf parameter is not completely contained in a valid 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// part of the user address space. 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Buffer fault"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAENOTCONN: 
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The socket is not connected. 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket not connected"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAEINTR:
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The socket was closed. 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket closed"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAEINPROGRESS:
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// A blocking Winsock call is in progress, or the service 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// provider is still processing a callback function. 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket busy"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAENETRESET: 
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The connection has been broken due to the keep-alive 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// activity detecting a failure while the operation was in progress. 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Connection broken"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAENOTSOCK: 
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The descriptor is not a socket. 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"invalid Socket"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAEOPNOTSUPP: 
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// MSG_OOB was specified, but the socket is not stream 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// style such as type SOCK_STREAM, out of band (OOB) 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// data is not supported in the communication domain 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// associated with this socket, or the socket is 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// unidirectional and supports only send operations.
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"OOB not supported"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAESHUTDOWN: 
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The socket has been shut down; it is not possible 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// to receive on a socket after shutdown has been 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// invoked with how set to SD_RECEIVE or SD_BOTH. 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket has been shut down"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAEWOULDBLOCK: 
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The socket is marked as nonblocking and the 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// receive operation would block. 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"blocking disabled"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAEMSGSIZE: 
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The message was too large to fit into the 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// specified buffer and was truncated.
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Message too large"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAEINVAL: 
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The socket has not been bound with bind 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// (Windows Sockets), an unknown flag was 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// specified, MSG_OOB was specified for a 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// socket with SO_OOBINLINE enabled, or 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// (for byte stream sockets only) 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// len was zero or negative. 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket unbound or invalid Flag"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAECONNABORTED: 
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The virtual circuit was terminated due to a 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// time-out or other failure. The application 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// should close the socket as it is no longer usable. 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket terminated"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAETIMEDOUT: 
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The connection has been dropped because of 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// a network failure or because the peer system 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// failed to respond. 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Connection dropped"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}

[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]case[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] WSAECONNRESET: 
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The virtual circuit was reset by the remote 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// side executing a hard or abortive close. 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// The application should close the socket 
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4][/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// because it is no longer usable.
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Connection broken from remote"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]default[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]:
{
MessageBoxA ( NULL, 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"unknown error cause"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515][FONT=Courier New][SIZE=4][COLOR=#a31515]"Socket error"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4], MB_OK ); 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]break[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4];
}
} [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// end of switch ( error )
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4]
[/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff][FONT=Courier New][SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] error;
} [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000][FONT=Courier New][SIZE=4][COLOR=#008000]// end of ErrorHandler function
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=4][FONT=Courier New][SIZE=4] 
[/SIZE][/FONT][/SIZE][/FONT]

Dies ist allerdings nur eine rudimentäre Implementierung, die dir die Kommunikation mit eine einzigen Client ermöglicht.
Um mehrere Clients bedienen zu können muss nach dem Accept jedesmal ein neuer Thread gestartet werden, an den der resultierende Socket weitergegeben wird; das Hauptprogramm geht sofort wieder in den Accept zurück.

Hoffe, das hilf dir.

Anmerkung:
Wenn im Text von "Irda" die Rede ist: Ich hab das Ganze damals Testprogramm für eine Irda(Infrarot) Kommunikation geschrieben, die entsprechenden Options sind aber auskommentiert.
Das nur zur Info !
 
Zuletzt bearbeitet:
Um mehrere Clients bedienen zu können muss nach dem Accept jedesmal ein neuer Thread gestartet werden, an den der resultierende Socket weitergegeben wird; das Hauptprogramm geht sofort wieder in den Accept zurück.
Ist das wirklich richtig so? Ich hab mir den Quellcode von dir jetzt nicht angeguckt, aber ich hab letztens noch ein Tutorial durchgearbeitet, müsste sogar das von C-Worker gesehen sein, und man kann aufjedenfall auch mit "select" arbeiten. Man nimmt einen akzeptierenden Socket auf dem Verbindungen angenommen werden und für jeden Clienten noch einen Socket dazu und "select" blockiert solange bis sich was auf einem Socket getan hat und den/die Sockets werden dann in ein FD_SET struct abgespeichert. Das liest man dann aus und bearbeitet die Anfragen.
Problematisch ist, dass während der Bearbeitung die neuen Anfragen warten müssen bis diese erst fertig sind. Bei vielen Clients ist für jeden Socket einen neuen Thread zu erstellen bestimmt auch nicht besser. Was besser ist hängt wohl von der Anzahl der Clients ab und zur Not vielleicht sogar eine Kombination aus beidem.
 
Ist das wirklich richtig so? Ich hab mir den Quellcode von dir jetzt nicht angeguckt, aber ich hab letztens noch ein Tutorial durchgearbeitet, müsste sogar das von C-Worker gesehen sein, und man kann aufjedenfall auch mit "select" arbeiten. Man nimmt einen akzeptierenden Socket auf dem Verbindungen angenommen werden und für jeden Clienten noch einen Socket dazu und "select" blockiert solange bis sich was auf einem Socket getan hat und den/die Sockets werden dann in ein FD_SET struct abgespeichert. Das liest man dann aus und bearbeitet die Anfragen.
Problematisch ist, dass während der Bearbeitung die neuen Anfragen warten müssen bis diese erst fertig sind. Bei vielen Clients ist für jeden Socket einen neuen Thread zu erstellen bestimmt auch nicht besser. Was besser ist hängt wohl von der Anzahl der Clients ab und zur Not vielleicht sogar eine Kombination aus beidem.

Für jeden Client einen eigenen Thread zu erstellen ist glaube ich wirklich nicht das wirtschaftlichste was man da machen kann.
AFAIK werden meist einem Thread x Clients übergeben. Außerdem erstellt der Server dann nach Bedarf bis zu y Threads, die ja jeweils x Clients halten können.
Zumindest für kleinere Projekte klappt das wunderbar.
 
Zitat:
Ist das wirklich richtig so? Ich hab mir den Quellcode von dir jetzt nicht angeguckt, aber ich hab letztens noch ein Tutorial durchgearbeitet, müsste sogar das von C-Worker gesehen sein, und man kann aufjedenfall auch mit "select" arbeiten. Man nimmt einen akzeptierenden Socket auf dem Verbindungen angenommen werden und für jeden Clienten noch einen Socket dazu und "select" blockiert solange bis sich was auf einem Socket getan hat und den/die Sockets werden dann in ein FD_SET struct abgespeichert. Das liest man dann aus und bearbeitet die Anfragen.
Problematisch ist, dass während der Bearbeitung die neuen Anfragen warten müssen bis diese erst fertig sind. Bei vielen Clients ist für jeden Socket einen neuen Thread zu erstellen bestimmt auch nicht besser. Was besser ist hängt wohl von der Anzahl der Clients ab und zur Not vielleicht sogar eine Kombination aus beidem.

Für jeden Client einen eigenen Thread zu erstellen ist glaube ich wirklich nicht das wirtschaftlichste was man da machen kann.
AFAIK werden meist einem Thread x Clients übergeben. Außerdem erstellt der Server dann nach Bedarf bis zu y Threads, die ja jeweils x Clients halten können.
Zumindest für kleinere Projekte klappt das wunderbar.

Hallo auch,

die C# select Anweisung der .NET Extensions sollte man immer mit Vorsicht geniessen. Sie wird z.B. nicht sofort ausgeführt, sondern erst bei der Auswertung der einzelnen Member der Selection, ausserdem ist sie alles andere als schnell.
Ausserdem: Wenn der select blockiert, müssen die Clients erst mal warten, bis alle angemeldet sind (wann soll das sein ?). Der Socket ist ausserdem intern mit einer Art Warteschlange ausgestattet, deren Größe recht gering ist (vielleicht 3 Verbindungsanfragen); die 4. Verbindungsanfrage wird dann nicht akzeptiert und dadurch bekommst du immer nur ein Teilergebnis mit beim select. Daher ist immer ratsam, jede Verbindung einzeln zu handhaben und den Socket möglichst schnell wieder in einen Zustand zu versetzen, in dem ein neuer Client sich anmelden kann (sonst wird das zum Flaschenhals!), und das geht am besten mit Threading. Damit nicht jedesmal ein neuer Thread instanziert werden muß (Zeitaufwendig!), am besten ThreadPool benutzen.

Einem Thread mehrere Clients zuzuweisen, geht natürlich, aber es hängt von der Aufgabenstellung ab, ob das wirklich besser ist.

Schöne Grüße,
Bieblsoft
 
Zuletzt bearbeitet:
die C# select Anweisung der .NET Extensions sollte man immer mit Vorsicht geniessen.

Ich muss gestehen: Ich hab keine Ahnung von C#, aber wie sind wir aufeinmal von C++ zu C# gekommen?

Ausserdem: Wenn der select blockiert, müssen die Clients erst mal warten, bis alle angemeldet sind (wann soll das sein ?).

Die Clients melden sich über den Socket an der an dem Port gebunden ist. Wenn an diesem Port eine neue "Nachricht" eingeht bedeutet das, dass es eine neue Verbindung gibt. Diese wird dann auch generiert. Da der Socket der neue Verbindungen erstellt ebenfalls durchs select überwacht wird muss man nicht warten bis alle Clienten verbunden sind, sondern select blockiert eben nicht mehr, weil eine neue Nachricht eingegangen ist, nämlich auf dem Socket der neue Verbindungen annimmt.

Der Socket ist ausserdem intern mit einer Art Warteschlange ausgestattet, deren Größe recht gering ist (vielleicht 3 Verbindungsanfragen); die 4. Verbindungsanfrage wird dann nicht akzeptiert und dadurch bekommst du immer nur ein Teilergebnis mit beim select.

Da hab ich ehrlich gesagt keine Ahnung. Kann man das irgendwo genauer nachlesen?
 
die C# select Anweisung der .NET Extensions sollte man immer mit Vorsicht geniessen. Sie wird z.B. nicht sofort ausgeführt, sondern erst bei der Auswertung der einzelnen Member der Selection, ausserdem ist sie alles andere als schnell.
Ausserdem: Wenn der select blockiert, müssen die Clients erst mal warten, bis alle angemeldet sind (wann soll das sein ?). Der Socket ist ausserdem intern mit einer Art Warteschlange ausgestattet, deren Größe recht gering ist (vielleicht 3 Verbindungsanfragen); die 4. Verbindungsanfrage wird dann nicht akzeptiert und dadurch bekommst du immer nur ein Teilergebnis mit beim select

@tsjuder:

Recht hast du, ich bin versehentlich in C# abgerutscht :D weil ich da grad was machen musste...

Daher hab ich die select-Anweisungen verwechselt, denn die gibt es da auch.

In C++ hab ich mit Select nie gearbeitet, immer nur wie beschrieben .

Zitat:
Zitat von BieblSoft
Der Socket ist ausserdem intern mit einer Art Warteschlange ausgestattet, deren Größe recht gering ist (vielleicht 3 Verbindungsanfragen); die 4. Verbindungsanfrage wird dann nicht akzeptiert und dadurch bekommst du immer nur ein Teilergebnis mit beim select.

Da hab ich ehrlich gesagt keine Ahnung. Kann man das irgendwo genauer nachlesen?

Die Größe der Client Queue wird durch die listen-Funktion eingestellt (der int als 2. Argument), kann aber nur einen Maximalwert von 5 haben.
Nachlesen: CAsyncSocket::Listen

Übrigens entspricht die Socket-Implementierung von Microsoft dem internationalen Berkeley-Standard, daher ist dies auch unter anderen Systemen genauso.
 
Zurück
Oben