here is main cpp code
#include "class_server.h"
class_server::class_server()
{
this->setIp();
this->setPort();
this->setMax_Clients();
this->setDeafault_buflen();
}
void class_server::setIp()
{
strcpy(ip, "127.0.0.1");
}
void class_server::setPort()
{
strcpy(port, "27015");
}
void class_server::setMax_Clients()
{
this->max_clients = 10;
}
void class_server::setDeafault_buflen()
{
this->default_buflen = 512;
}
void class_server::setRecvbuflen()
{
this->recvbuflen = this->default_buflen;
}
char *class_server::getIp()
{
return this->ip;
}
int class_server::connect()
{
iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
if(iResult != 0)
{
printf("WSAStartup failed: %d\n", iResult);
return 1;
}
struct addrinfo *result = NULL, *ptr = NULL, hints;
ZeroMemory(&hints, sizeof(hints));
hints.ai_family = AF_INET;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP;
hints.ai_flags = AI_PASSIVE;
iResult = getaddrinfo(NULL, this->port, &hints, &result);
if(iResult != 0)
{
printf("getaddrinfo failed: %d\n", iResult);
WSACleanup();
return 1;
}
SOCKET ListenSocket = INVALID_SOCKET;
ListenSocket = socket(result->ai_family,result->ai_socktype, result->ai_protocol);
if(ListenSocket == INVALID_SOCKET)
{
printf("Error at socket: %ld\n", WSAGetLastError());
freeaddrinfo(result);
WSACleanup();
return 1;
}
iResult = bind(ListenSocket, result->ai_addr, (int)result->ai_addrlen);
if(iResult == SOCKET_ERROR)
{
printf("bind failed: %d\n", WSAGetLastError());
freeaddrinfo(result);
closesocket(ListenSocket);
WSACleanup();
return 1;
}
if(listen(ListenSocket, SOMAXCONN) == SOCKET_ERROR)
{
printf("Error at bind(): %ld\n", WSAGetLastError());
closesocket(ListenSocket);
WSACleanup();
return 1;
}
//SOCKET ClientSocket;
this->ClientSocket = INVALID_SOCKET;
this->ClientSocket = accept(ListenSocket, NULL, NULL);
if(this->ClientSocket == INVALID_SOCKET)
{
printf("accept failed: %d\n", WSAGetLastError());
closesocket(ListenSocket);
WSACleanup();
return 1;
}
return iResult;
}
int class_server::recive()
{
iResult = recv(this->ClientSocket, recvbuf, recvbuflen, 0);
if(iResult > 0)
{
printf("Bytes recived: %d\n", iResult);
iSendResult = send(this->ClientSocket, recvbuf, iResult, 0);
if(iSendResult == SOCKET_ERROR)
{
printf("send failed: %d\n", WSAGetLastError());
closesocket(this->ClientSocket);
WSACleanup();
return 1;
}
printf("Bytes sent: %d\n", iSendResult);
printf("Bytes sent: %d\n", iSendResult);
}
else if(iResult == 0)
printf("Connection closed...\n");
else
{
printf("recv failed: %d\n", WSAGetLastError());
closesocket(this->ClientSocket);
WSACleanup();
return 1;
}
}
int *class_server::disconect()
{
iResult = shutdown(ClientSocket, SD_SEND);
if(iResult == SOCKET_ERROR)
{
printf("shutdown failed: %d\n", WSAGetLastError());
closesocket(ClientSocket);
WSACleanup();
return (int*)1;
}
closesocket(ClientSocket);
WSACleanup();
}
and here is class header
//#include "class_server.cpp"
#include <winsock2.h>
#include <ws2tcpip.h>
#include <iostream>
#pragma comment(lib, "ws2_32")
class class_server
{
private:
int iResult;
int iSendResult;
int iRecive;
int recvbuflen;
int count;
int max_clients;
int default_buflen;
char recvbuf[512];
char *ip;
char *port;
SOCKET ClientSocket;
WSADATA wsaData;
public:
//constructor
class_server();
//set
void setIp();
void setPort();
void setMax_Clients();
void setDeafault_buflen();
void setRecvbuflen();
//get
char *getIp();
int connect();
int recive();
int fSend();
int *disconect();
};
i have working client side but can t get data sent to server and receive there.
This post has been edited by herki: 26 January 2010 - 07:28 AM

New Topic/Question
Reply




MultiQuote






|