T
edit: habe abhängigkeit zur easyclib entfernt ohne erfolg
s_netpp.cpp
#include <iostream>
#include <vector>
#include <string>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include "../netpp.h"
using namespace std;
//Global Variables
struct sockaddr_in s_address;
socklen_t addrlen;
int server_client_socket;
int server_socket;
//get a port from host
bool netserver::getsocket()
{
if((server_socket=socket(AF_INET, SOCK_STREAM, 0)) >0)
{
cout << "Socket wurde angelegt" <<endl;
return 0;
}
else
{
return 1;
}
}
bool netserver::getport(int port)
{
const int y = 1;
setsockopt(server_socket, SOL_SOCKET, SO_REUSEADDR, &y,sizeof(int));
s_address.sin_family = AF_INET;
s_address.sin_addr.s_addr = INADDR_ANY;
s_address.sin_port = htons(port);
if (bind (server_socket,(struct sockaddr *) &s_address, sizeof (s_address)) !=0)
{
cout << "Port Belegt" << endl;
return 1;
}
else
listen (server_socket, 5);
addrlen = sizeof (struct sockaddr_in);
return 0;
}
//waiting for client connection
bool netserver::serverlisten()
{
while(1){
server_client_socket = accept (server_socket, (struct sockaddr *) &s_address, &addrlen);
if (server_client_socket > 0)
{
cout << "Client verbunden" << endl;
return 0;
}
}
}
//send signal when server ready to recieve data
bool netserver::netsend(string data)
{
send(server_client_socket,data.c_str(),data.size(),0 );
return 0;
}
//get packages
string netserver::netget(const int BUF)
{
string *buffer=new string[BUF];
recv(server_client_socket,buffer,BUF,0);
return *buffer;
}
//close network connection
void netserver::closeconnect()
{
close (server_client_socket);
}
c_netpp.cpp
/*
Writen by Jan Koster release under lgpl
*/
#include <iostream>
#include <string>
#include <vector>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include "../netpp.h"
using namespace std;
//Global Variables
int client_socket;
bool netclient::netconnect(std::string ipadr,int port)
{
struct sockaddr_in c_address;
if ((client_socket=socket (AF_INET, SOCK_STREAM,0)) > 0)
{
cout << "Socket Angelegt" << endl;
c_address.sin_family= AF_INET;
c_address.sin_port = htons(port);
}
else
{
cout << "Socket konnte nicht Angelegt Werden" <<endl;
return 1;
}
inet_aton (ipadr.c_str(), &c_address.sin_addr);
if (connect (client_socket, (struct sockaddr *) &c_address, sizeof (c_address)) == 0)
{
cout << "Verbindung Hergestellt" << inet_ntoa(c_address.sin_addr) << endl;
return 0;
}
else
{
cout <<"Verbindung Fehlgeschlagen"<< endl;
return 1;
}
}
bool netclient::netsend(std::string data)
{
send(client_socket,data.c_str(),data.size(),0 );
return 0;
}
string netclient::netget(const int BUF)
{
string *buffer=new string[BUF];
recv(client_socket,buffer,BUF,0);
return *buffer;
}
void netclient::netend()
{
close (client_socket);
}
netpp.h
/*
Writen by Jan Koster release under lgpl
*/
#ifndef NETPP_H_
#define NETPP_H_
class netserver
{
public:
bool getsocket();
bool getport(int port);
bool serverlisten();
std::string netget(const int BUF);
bool netsend(std::string data);
void closeconnect();
};
class netclient
{
public:
bool create_connect();
bool netconnect(std::string ipadr,int port);
bool netsend(std::string data);
std::string netget(const int BUF);
void netend();
};
#endif