#include "Network.h"
#include <stdio.h>
//===============================================//
//= ServerTCP =//
//===============================================//
int Network::ServerTCP()
{
if(initSocket() != 0)
{
printf("Errore durante ServerTCP() -- initSocket()\n");
return -1;
}
if(createSocket(0) != 0)
{
printf("Errore durante ServerTCP() -- createSocket()\n");
return -1;
}
if(bindSocket() != 0)
{
printf("Errore durante ServerTCP() -- bindSocket()\n");
return -1;
}
if(acceptSocket() != 0)
{
printf("Errore durante ServerTCP() -- acceptSocket()\n");
return -1;
}
return 0;
}
//===============================================//
//= ClientTCP =//
//===============================================//
int Network::ClientTCP()
{
if(initSocket() != 0)
{
printf("Errore durante ClientTCP() -- initSocket()\n");
return -1;
}
if(createSocket(1) != 0)
{
printf("Errore durante ClientTCP() -- createSocket()\n");
return -1;
}
while(connectSocket() != 0)
{
printf("Errore durante ClientTCP() -- connectSocket()\n");
//return -1;
}
return 0;
}
//===============================================//
//= socketSend =//
//===============================================//
void Network::socketSend(char *sendbuf)
{
int sendResult;
sendResult = send(a_socket, sendbuf,(int)strlen(sendbuf), 0);
if(sendResult == SOCKET_ERROR)
{
printf("socketSend() Fallito %d\n",WSAGetLastError());
closeSocket();
return;
}
printf("Byte invitati %d\n",sendResult);
}
//===============================================//
//= socketRecv =//
//===============================================//
char* Network::socketRecv()
{
int recvResult;
char recvbuf[1024];
int recvbuflen = 1024;
char* tmp = recvbuf;
do
{
recvResult = recv(s_socket,recvbuf,recvbuflen,0);
if(recvResult > 0)
{
printf("byte ricevuti: %d\n", recvResult);
//printf("%s\n",recvbuf);
return tmp;
}
else if(recvResult == 0)
{
printf("Connessione chiusa\n");
closeSocket();
return NULL;
}
else
{
printf("Fallito socketRecv() con errore %d\n",WSAGetLastError());
return NULL;
}
} while (recvResult > 0);
}
//===============================================//
//= initSocket =//
//===============================================//
int Network::initSocket()
{
if (WSAStartup(DllVersion, &wsaData) != 0)
{
printf("Fallito initSocket. Errore: %d", WSAGetLastError());
return -1;
}
//Da cancellare
//server solo per vedere se � andato tutto bene
printf("initSocket OK!\n");
return 0;
}
//===============================================//
//= createSocket =//
//===============================================//
int Network::createSocket(int type)
{
if ((s_socket = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
{
printf("Fallito createSocket. Errore: %d", WSAGetLastError());
return -1;
}
if (type == 0)//SERVER
{
//Prepare the sockaddr_in structure
sokAddr_in.sin_family = AF_INET;
sokAddr_in.sin_addr.s_addr = INADDR_ANY;
sokAddr_in.sin_port = htons(8888);
}
else if (type == 1)//CLIENT
{
//Prepare the sockaddr_in structure
sokAddr_in.sin_family = AF_INET;
sokAddr_in.sin_addr.s_addr = inet_addr("127.0.0.1");
//server.sin_addr.s_addr = inet_pton(AF_INET,"127.0.0.1",&server.sin_addr);
sokAddr_in.sin_port = htons(8888);
}
//Da cancellare
//server solo per vedere se � andato tutto bene
printf("createSocket OK!\n");
return 0;
}
//===============================================//
//= closeSocket =//
//===============================================//
bool Network::closeSocket()
{
closesocket(s_socket);
WSACleanup();
return true;
}
//===============================================//
//= bindSocket =//
//===============================================//
int Network::bindSocket()
{
if (bind(s_socket, (struct sockaddr*)&sokAddr_in, sizeof(sokAddr_in)) == SOCKET_ERROR)
{
printf("Fallito bindSocket. Errore: %d", WSAGetLastError());
return -1;
}
//Listen
listen(s_socket, 3);
//Da cancellare
//server solo per vedere se � andato tutto bene
printf("bindSocket OK!\n");
return 0;
}
//===============================================//
//= acceptSocket =//
//===============================================//
int Network::acceptSocket()
{
c = sizeof(struct sockaddr_in);
a_socket = accept(s_socket, (struct sockaddr*)&client, &c);
if (a_socket == INVALID_SOCKET)
{
printf("Fallito acceptSocket. Errore: %d", WSAGetLastError());
return -1;
}
//Da cancellare
//server solo per vedere se � andato tutto bene
printf("acceptSocket OK!\n");
return 0;
}
//===============================================//
//= connectSocket =//
//===============================================//
int Network::connectSocket()
{
if (connect(s_socket, (struct sockaddr*)&sokAddr_in, sizeof(sokAddr_in)) < 0)
{
printf("Fallito connectSocket. Errore: %d\n", WSAGetLastError());
return -1;
}
//Da cancellare
//server solo per vedere se � andato tutto bene
printf("connectSocket OK!\n");
return 0;
}