Code:
#include <windows.h>
#include <iostream>
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"user32.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 != 0)
{printf("%s\n","Setting Up Winsock Client Failed!"); WSACleanup();}
else
printf("%s\n","Setting Up Winsock Client 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(80);
sins.sin_addr.s_addr = inet_addr("127.0.0.1");
}
void ConnectInfo()
{
if(connect(ConnectSock, (sockaddr*)&sins, sizeof(sins))== SOCKET_ERROR)
{printf("%s\n","Failed To Connect!"); WSACleanup();}
else printf("%s\n","Connected To Server!");
}
void SendToSocket(char* Data, int size)
{
while(1)
{
// printf("%s\n","Enter Something To Send!");
// cin >> Something;
Result = send(ConnectSock,Data,size,0);
if(Result == -1) {printf("%s\n","Failed To Send Data!"); WSACleanup(); break;}
else{printf("Data Sent! %i\n", Data); Sleep(3000);}
}
}
protected:
private:
WSADATA WSAdata;
SOCKET ConnectSock;
sockaddr_in sins;
int Result;
char Something[64];
};
/**********************************************************************************/
/******************************THE SERVER****************************************/
class TcpServer
{
public:
void InitWinsock()
{
Result = WSAStartup(MAKEWORD(2, 2), &WSAdata);
if(Result == -1)
{printf("%s\n","Setting Up Winsock Server Failed!"); WSACleanup();}
else
{printf("%s\n","Setting Up Winsock Server 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(80);
sins.sin_addr.s_addr = inet_addr("127.0.0.1");
}
void BindnListen()
{
if( bind( ListenSock, (struct sockaddr*)&sins, sizeof( struct sockaddr)) == SOCKET_ERROR ){
printf("%s\n","Failed To Bind To Address!");WSACleanup();}
else printf("%s\n","Binded To Address Success!");
if(listen(ListenSock, 1)==SOCKET_ERROR){
printf("%s\n","Failed To Listen On Address!"); WSACleanup();}
else printf("%s\n","Listening On Address!");
}
void WaitForConnections()
{
while(1)
{
printf("%s\n","Waiting For Connections!");
int clnt = sizeof(sins);
AcceptSock = accept(ListenSock ,(struct sockaddr*)&sins, &clnt);
if(AcceptSock == INVALID_SOCKET)
{
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);
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;
};
/**********************************THE SERVER END********************************/
int main(int argc, char* argv[])
{
Data DataObject;
DataObject.a = 50;
DataObject.b = 100;
DataObject.c = 200;
TcpClient TcpClientObject;
TcpClientObject.InitWinsock();
TcpClientObject.SetAddressInfo();
TcpServer TcpServerObject;
TcpServerObject.InitWinsock();
TcpServerObject.SetAddressInfo();
TcpServerObject.BindnListen();
TcpClientObject.ConnectInfo();
TcpServerObject.WaitForConnections();
TcpClientObject.SendToSocket((char*)&DataObject, sizeof(DataObject));
TcpServerObject.RecieveFromSocket();
WSACleanup();
return 0;
}