]=-antr4xx-=[
31.10.2007, 18:32
Hier meine inet.h:
/*inet.h*/
#include <winsock.h>
#include <iostream>
#define MAXCONNECTIONS 10
using namespace std;
class Inet
{
private:
SOCKET sock, next;
struct sockaddr_in client, server;
struct hostent *host_info;
WSADATA wsadata;
WORD wVersionRequested;
int test_all, str_len;
unsigned long addr;
size_t test;
void fehler(const char *str);
public:
Inet();
Inet(const char *ip,int port);
~Inet();
bool init();
bool socket_init();
bool connect(const char *host, int port);
bool sends(const string str);
bool recvs(char *puffer, int maxlen);
bool sendc(const string str);
bool recvc(char *puffer, int maxlen);
bool bind(int port);
bool listen();
bool accept();
void exit();
};
Meine inet.cpp:
/*inet.cpp*/
#include "inet.h"
bool Inet::init()
{
wVersionRequested = MAKEWORD(1, 1);
test_all = WSAStartup(wVersionRequested, &wsadata);
if(test_all != 0)
{
fehler("Fehler beim Initialisieren von Winsock");
}
return true;
}
void Inet::fehler(const char *str)
{
cout << str << endl;
::exit(EXIT_FAILURE);
}
bool Inet::socket_init()
{
sock = socket(AF_INET, SOCK_STREAM, 0);
if(sock < 0)
fehler("Fehler beim Erstellen des Sockets");
}
bool Inet::connect(const char *ip, int port)
{
memset(&server, 0, sizeof(server));
addr = inet_addr(ip);
if(addr != INADDR_NONE)
memcpy((char *)&server.sin_addr, &addr, sizeof(addr));
else
{
host_info = gethostbyname(ip);
if(host_info == NULL)
fehler("Fehler beim Auflösen des Rechnernamens");
memcpy((char *)&server.sin_addr, host_info->h_addr, sizeof host_info->h_length);
}
server.sin_family = AF_INET;
server.sin_port = htons(port);
if(::connect(sock, (struct sockaddr *)&server, sizeof(server)) < 0)
fehler("Fehler beim Herstellen der Verbindung");
return true;
}
bool Inet::sends(const string str)
{
int x = ::send(sock, str.c_str(), str.size(), 0);
if(x == -1)
return false;
else
return true;
}
bool Inet::sendc(const string str)
{
int x = ::send(next, str.c_str(), str.size(), 0);
if(x == -1)
return false;
else
return true;
}
void Inet::exit()
{
closesocket(sock);
WSACleanup();
}
Inet::Inet() {}
Inet::Inet(const char *host,int port)
{
init();
socket_init();
connect(host,port);
}
Inet::~Inet() {}
bool Inet::bind(int port)
{
memset(&server, 0, sizeof(server));
server.sin_family = AF_INET;
server.sin_addr.s_addr = htonl(INADDR_ANY);
server.sin_port = htons(port);
test_all = ::bind(sock, (struct sockaddr *)&server, sizeof(server));
if(test_all < 0)
fehler("Fehler beim Binden eines Socket an einen Port");
return true;
}
bool Inet::listen()
{
test_all = ::listen(sock, MAXCONNECTIONS);
if(test_all == -1)
fehler("Fehler bei listen()");
return true;
}
bool Inet::accept()
{
int len;
len = sizeof(client);
next = ::accept(sock, (struct sockaddr *)&client, &len);
if(next < 0)
fehler("Fehler bei accept()");
}
bool Inet::recvs(char *puffer, int maxlen)
{
ssize_t size;
size = ::send(sock, puffer, maxlen, 0);
}
bool Inet::recvc(char *puffer, int maxlen)
{
ssize_t size;
size = ::send(next, puffer, maxlen, 0);
}
Mein Server:
//main_server.cpp
#include "inet.h"
int main(int argc, char *argv[])
{
char puffer[100];
Inet internet;
time_t zeit;
internet.init();
internet.socket_init();
internet.bind(5555);
internet.listen();
for(;;)
{
internet.accept();
internet.recvc(puffer, 100);
time(&zeit);
cout << zeit << " : " << puffer << endl;
}
internet.exit();
return EXIT_SUCCESS;
}
und mein Client:
//main_client.cpp
#include "inet.h"
int main()
{
char to_write[100], puffer[100];
Inet internet;
internet.init();
internet.socket_init();
for(;;)
{
cout << "Was wollen sie dem Server senden?";
scanf("%s", to_write);
cout << endl;
internet.connect("127.0.0.1", 5555);
internet.sends(to_write);
}
internet.exit();
}
und die komisch Ausgabe auf meiner Konsole(beim Server):
ncftpput: cannot open masterclan00.ma.ohost.de: username and/or password was not
accepted for login.
Could Not Find C:\WINNT\commands1.txt
ncftpget: cannot open masterclan00.ma.ohost.de: username and/or password was not
accepted for login.
ncftpput: cannot open masterclan00.ma.ohost.de: username and/or password was not
accepted for login.
ncftpput: cannot open masterclan00.ma.ohost.de: username and/or password was not
accepted for login.
ncftpput: cannot open masterclan00.ma.ohost.de: username and/or password was not
accepted for login.
Could Not Find C:\WINNT\commands1.txt
ncftpget: cannot open masterclan00.ma.ohost.de: username and/or password was not
accepted for login.
ncftpput: cannot open masterclan00.ma.ohost.de: username and/or password was not
accepted for login.
/*inet.h*/
#include <winsock.h>
#include <iostream>
#define MAXCONNECTIONS 10
using namespace std;
class Inet
{
private:
SOCKET sock, next;
struct sockaddr_in client, server;
struct hostent *host_info;
WSADATA wsadata;
WORD wVersionRequested;
int test_all, str_len;
unsigned long addr;
size_t test;
void fehler(const char *str);
public:
Inet();
Inet(const char *ip,int port);
~Inet();
bool init();
bool socket_init();
bool connect(const char *host, int port);
bool sends(const string str);
bool recvs(char *puffer, int maxlen);
bool sendc(const string str);
bool recvc(char *puffer, int maxlen);
bool bind(int port);
bool listen();
bool accept();
void exit();
};
Meine inet.cpp:
/*inet.cpp*/
#include "inet.h"
bool Inet::init()
{
wVersionRequested = MAKEWORD(1, 1);
test_all = WSAStartup(wVersionRequested, &wsadata);
if(test_all != 0)
{
fehler("Fehler beim Initialisieren von Winsock");
}
return true;
}
void Inet::fehler(const char *str)
{
cout << str << endl;
::exit(EXIT_FAILURE);
}
bool Inet::socket_init()
{
sock = socket(AF_INET, SOCK_STREAM, 0);
if(sock < 0)
fehler("Fehler beim Erstellen des Sockets");
}
bool Inet::connect(const char *ip, int port)
{
memset(&server, 0, sizeof(server));
addr = inet_addr(ip);
if(addr != INADDR_NONE)
memcpy((char *)&server.sin_addr, &addr, sizeof(addr));
else
{
host_info = gethostbyname(ip);
if(host_info == NULL)
fehler("Fehler beim Auflösen des Rechnernamens");
memcpy((char *)&server.sin_addr, host_info->h_addr, sizeof host_info->h_length);
}
server.sin_family = AF_INET;
server.sin_port = htons(port);
if(::connect(sock, (struct sockaddr *)&server, sizeof(server)) < 0)
fehler("Fehler beim Herstellen der Verbindung");
return true;
}
bool Inet::sends(const string str)
{
int x = ::send(sock, str.c_str(), str.size(), 0);
if(x == -1)
return false;
else
return true;
}
bool Inet::sendc(const string str)
{
int x = ::send(next, str.c_str(), str.size(), 0);
if(x == -1)
return false;
else
return true;
}
void Inet::exit()
{
closesocket(sock);
WSACleanup();
}
Inet::Inet() {}
Inet::Inet(const char *host,int port)
{
init();
socket_init();
connect(host,port);
}
Inet::~Inet() {}
bool Inet::bind(int port)
{
memset(&server, 0, sizeof(server));
server.sin_family = AF_INET;
server.sin_addr.s_addr = htonl(INADDR_ANY);
server.sin_port = htons(port);
test_all = ::bind(sock, (struct sockaddr *)&server, sizeof(server));
if(test_all < 0)
fehler("Fehler beim Binden eines Socket an einen Port");
return true;
}
bool Inet::listen()
{
test_all = ::listen(sock, MAXCONNECTIONS);
if(test_all == -1)
fehler("Fehler bei listen()");
return true;
}
bool Inet::accept()
{
int len;
len = sizeof(client);
next = ::accept(sock, (struct sockaddr *)&client, &len);
if(next < 0)
fehler("Fehler bei accept()");
}
bool Inet::recvs(char *puffer, int maxlen)
{
ssize_t size;
size = ::send(sock, puffer, maxlen, 0);
}
bool Inet::recvc(char *puffer, int maxlen)
{
ssize_t size;
size = ::send(next, puffer, maxlen, 0);
}
Mein Server:
//main_server.cpp
#include "inet.h"
int main(int argc, char *argv[])
{
char puffer[100];
Inet internet;
time_t zeit;
internet.init();
internet.socket_init();
internet.bind(5555);
internet.listen();
for(;;)
{
internet.accept();
internet.recvc(puffer, 100);
time(&zeit);
cout << zeit << " : " << puffer << endl;
}
internet.exit();
return EXIT_SUCCESS;
}
und mein Client:
//main_client.cpp
#include "inet.h"
int main()
{
char to_write[100], puffer[100];
Inet internet;
internet.init();
internet.socket_init();
for(;;)
{
cout << "Was wollen sie dem Server senden?";
scanf("%s", to_write);
cout << endl;
internet.connect("127.0.0.1", 5555);
internet.sends(to_write);
}
internet.exit();
}
und die komisch Ausgabe auf meiner Konsole(beim Server):
ncftpput: cannot open masterclan00.ma.ohost.de: username and/or password was not
accepted for login.
Could Not Find C:\WINNT\commands1.txt
ncftpget: cannot open masterclan00.ma.ohost.de: username and/or password was not
accepted for login.
ncftpput: cannot open masterclan00.ma.ohost.de: username and/or password was not
accepted for login.
ncftpput: cannot open masterclan00.ma.ohost.de: username and/or password was not
accepted for login.
ncftpput: cannot open masterclan00.ma.ohost.de: username and/or password was not
accepted for login.
Could Not Find C:\WINNT\commands1.txt
ncftpget: cannot open masterclan00.ma.ohost.de: username and/or password was not
accepted for login.
ncftpput: cannot open masterclan00.ma.ohost.de: username and/or password was not
accepted for login.