PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Winsock -- komische Konsolenausgabe



]=-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.

-[RiDER]-
31.10.2007, 21:30
nimm nen anderen Port ;)

MfG RiDER

]=-antr4xx-=[
02.11.2007, 14:37
Es geht immer noch nicht, und der Client hat Probleme beim Herstellen der verbindung, und Ausgabe beim Server bleibt die Gleiche...