Code:
// tcp.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <vector>
#include <windows.h>
#include <iostream>
#include <list>
#include <stdio.h>
#include <d3dx9.h>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
class Data
{
public:
int a;
int b;
int c;
protected:
private:
};
class TcpClient
{
public:
void InitWinsock()
{
Result = WSAStartup(MAKEWORD(2, 2), &WSAdata);
if(Result == -1)
{
printf("%s\n","Setting Up Winsock Failed!");
}
else
{
printf("%s\n","Setting Up Winsock Success!");
}
}
void SetAddressInfo()
{
memset(&sins, 0, sizeof(sins));
ConnectSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
sins.sin_family = AF_INET;
sins.sin_port = htons(50);
sins.sin_addr.s_addr = inet_addr("192.168.1.100");
}
void ConnectInfo()
{
if(connect(ConnectSock, (sockaddr *)&sins, sizeof(SOCKADDR_IN))== SOCKET_ERROR)
{
printf("%s\n","Failed To Connect!");
}
else
{
printf("%s\n","Connected To Server!");
}
}
void SendToSocket(char*Data)
{
while(1)
{
// printf("%s\n","Enter Something To Send!");
// cin >> Something;
Result = send(ConnectSock,Data,sizeof(Data),0);
if(Result == -1)
{
printf("%s\n","Failed To Send Data!");
break;
}
else
{
printf("%s\n","Data Sent!");
}
}
}
protected:
private:
WSADATA WSAdata;
SOCKET ConnectSock;
sockaddr_in sins;
int Result;
char Something[64];
};
class TcpServer
{
public:
void InitWinsock()
{
Result = WSAStartup(MAKEWORD(2, 2), &WSAdata);
if(Result == -1)
{
printf("%s\n","Setting Up Winsock Failed!");
}
else
{
printf("%s\n","Setting Up Winsock Success!");
}
}
void SetAddressInfo()
{
memset(&sins, 0, sizeof(sins));
ListenSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
sins.sin_family = AF_INET;
sins.sin_port = htons(50);
sins.sin_addr.s_addr = inet_addr("192.168.1.100");
}
void BindnListen()
{
if( bind( ListenSock, (struct sockaddr*)&sins, sizeof( struct sockaddr)) == SOCKET_ERROR )
{
printf("%s\n","Failed To Bind To Address!");
}
else
{
printf("%s\n","Binded To Address Success!");
}
if(listen(ListenSock, 1)==SOCKET_ERROR)
{
printf("%s\n","Failed To Listen On Address!");
}
else
{
printf("%s\n","Listening On Address!");
}
}
void WaitForConnections()
{
while(1)
{
printf("%s\n","Waiting For Connections!");
AcceptSock = accept(ListenSock , (struct sockaddr*)&sins,0);
if(AcceptSock == SOCKET_ERROR)
{
printf("%s\n","No Connection Made Yet!");
}
else
{
printf("%s\n","Connection Made!");
break;
}
}
}
void RecieveFromSocket()
{
while(1)
{
if(AcceptSock != INVALID_SOCKET)
{
recv(AcceptSock,(char*)&DataObject,sizeof(DataObject),0);
//RecvBuffer[strlen(RecvBuffer)-1] = '\0';
printf("%d\n",DataObject.a);
printf("%d\n",DataObject.b);
printf("%d\n",DataObject.c);
}
else
{
printf("%s\n","No Connection Yet!");
}
}
}
protected:
private:
WSADATA WSAdata;
SOCKET ListenSock;
SOCKET AcceptSock;
sockaddr_in sins;
int Result;
char RecvBuffer[512];
Data DataObject;
};
#define SERVER
//#define CLIENT
int _tmain(int argc, _TCHAR* argv[])
{
Data DataObject;
DataObject.a = 50;
DataObject.b = 100;
DataObject.c = 200;
#ifndef CLIENT
TcpClient TcpClientObject;
TcpClientObject.InitWinsock();
TcpClientObject.SetAddressInfo();
TcpClientObject.ConnectInfo();
TcpClientObject.SendToSocket((char*)&DataObject);
#endif
#ifndef SERVER
TcpServer TcpServerObject;
TcpServerObject.InitWinsock();
TcpServerObject.SetAddressInfo();
TcpServerObject.BindnListen();
TcpServerObject.WaitForConnections();
TcpServerObject.RecieveFromSocket();
#endif
return 0;
}