hallo Leute
ich habe bei meinem Projekt folgendes Problem :
ich versuche mit einem Client einem Server daten zu senden mit dem code :
QString Nachricht;
QDataStream Send(&TcpSocket);
Send.setVersion(QDataStream::Qt_4_4);
Nachricht = "Hallo";
Send << Nachricht ;
der Server bekommt den Befehl zwar aber wenn ich mir den dann Ausgeben lasse ist der leer.
hat jemand eine Idee vodran das liegen könnte ?
LG Hannes
Senden mit TcpSockets
[code]
#include <windows.h>
#include <winsock2.h>
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <fstream>
#include <string>
#include <sstream>
#include <fstream>
#include <iostream.h>
#include <iomanip>
#define MAX_CLIENTS 100
using namespace std;
/*Globale Variablen*/
/*Globale Variablen END*/
//Versuche zur neuen Benutzerverwaltung START
struct benutzer
{
int id;
string pw;
string uname;
int status;
int client_id;
};
//Versuche zur neuen Benuzterverwaltung END
int startWinsock(void) //Winsocks initalisieren
{
WSADATA wsa;
return WSAStartup(MAKEWORD(2,0),&wsa);
}
void IntToString(int i, char* buffer)
{
sprintf(buffer, "%d", i);
}
int main()
{
bool login[MAX_CLIENTS]; //Variable zur Überprüfung des Loginstatuses
for(int login_i=0;login_i<=MAX_CLIENTS; login_i++){login[login_i]=false;} //login komplett auf false setzen
char buf[300]; //Variable für die eingehenden Nachrichten
char befehl[300]; //Variable für den eingehenden Befehl
int count = 0; //Hilfs-Laufzeitvariable
int i; //Hilfs-Laufzeitvariable
string datensatz; //Hilfsvariable um die Benutzerdaten auszulesen
int userid; // - " " -
struct benutzer user[MAX_CLIENTS]; //Beinhaltet die Userdaten
long rc;
SOCKET acceptSocket;
SOCKADDR_IN addr;FD_SET fdSet;
SOCKET clients[MAX_CLIENTS]; //Enthält den jeweiliegen zustande des clients i
ifstream in("user.dat"); //Die benutzerdatei Einlesen
int init_status_i;
for(init_status_i=0; init_status_i<=100;init_status_i++)
{
user[init_status_i].status=0;
}
while(getline(in, datensatz, ':'))
{//Benutzerdatei einlese und in user[x][y] schreiben Anfang
if(count==0){
userid = atoi (datensatz.c_str());
}
switch(count)
{
case 0:
user[userid].id=userid;
break;
case 1:
user[userid].uname=datensatz;
break;
case 2:
user[userid].pw=datensatz;
break;
case 3:
count=-1;
break;
}
count++;
}//Benutzerdatei einlese ende.
cin.get();
cout << user[2].id << endl;
cout << user[2].pw << endl;
cout << user[2].uname << endl;
cout << user[2].status << endl;
cin.get();
// Winsock starten
rc=startWinsock();
if(rc!=0)
{
cout << "Fehler: startWinsock, fehler code: "<< rc << endl;
}
else
{
cout << "Winsock gestartet!" << endl;
}
// Socket erstellen
acceptSocket=socket(AF_INET,SOCK_STREAM,0);
if(acceptSocket==INVALID_SOCKET)
{
cout << "Fehler: Der Socket konnte nicht erstellt werden, fehler code: " << WSAGetLastError() << endl;
return 1;
}
else
{
cout << "Socket erstellt!" << endl;
}
// Socket binden
memset(&addr,0,sizeof(SOCKADDR_IN));
addr.sin_family=AF_INET;
addr.sin_port=htons(5432); // Angabe des Ports
addr.sin_addr.s_addr=INADDR_ANY;
rc=bind(acceptSocket,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN));
if(rc==SOCKET_ERROR)
{
cout << "Fehler: bind, fehler code: " << WSAGetLastError() << endl;
return 1;
}
else
{
cout << "Socket an port 5432 gebunden" << endl;
}
// In den listen Modus wechseln.
//Auf eingehende Verbindungen warten.
rc=listen(acceptSocket,10);
if(rc==SOCKET_ERROR)
{
cout << "Fehler: listen, fehler code: " << WSAGetLastError() << endl;
return 1;
}
else
{
cout << "acceptSocket ist im listen Modus" << endl;
}
//clients array auf INVALID_SOCKET setzen
//invalid_socket entspricht keiner Verbindung.
for(i=1;i<MAX_CLIENTS;i++)
{
clients[i]=INVALID_SOCKET;
}
while(true) // Endlosschleife
{
FD_ZERO(&fdSet); // Inhalt leeren
FD_SET(acceptSocket,&fdSet); // Den Socket der verbindungen annimmt hinzufügen
// alle gültigen client sockets hinzufügen (nur die die nicht INVALID_SOCKET sind)
for(i=1;i<MAX_CLIENTS;i++)
{
if(clients[i]!=INVALID_SOCKET)
{
FD_SET(clients[i],&fdSet);
}
}
rc=select(0,&fdSet,NULL,NULL,NULL);
if(rc==SOCKET_ERROR)
{
cout << "Fehler: select, fehler code: " << WSAGetLastError() << endl;
return 1;
}
// acceptSocket is im fd_set? => verbindung annehmen (sofern es platz hat)
if(FD_ISSET(acceptSocket,&fdSet)) {
// einen freien platz für den neuen client suchen, und die verbingung annehmen
for(i=1;i<MAX_CLIENTS;i++)
{
if(clients[i]==INVALID_SOCKET)
{
clients[i]=accept(acceptSocket,NULL,NULL);
cout << "Neuen Client angenommen ("<< i << ")" << endl;
break;
}
}
}
// prüfen wlecher client sockets im fd_set sind
for(i=1;i<MAX_CLIENTS;i++)
{
if(clients[i]==INVALID_SOCKET)
{
continue; // ungültiger socket, d.h. kein verbunder client an dieser position im array
}
if(FD_ISSET(clients[i],&fdSet))
{
rc=recv(clients[i],buf,256,0);
// prüfen ob die verbindung geschlossen wurde oder ein fehler auftrat
if(rc==0 || rc==SOCKET_ERROR)
{
cout << "Client " << i <<" hat die Verbindung geschlossen" << endl;
login[i]=false; // Benutzer ausloggen
closesocket(clients[i]); // socket schliessen
clients[i]=INVALID_SOCKET; // seinen platz wieder freigeben
}
else
{
buf[rc]='\0'; // Buffer für eingehende befehle lehren
//Befehl auslesen und in befehl[] schreiben
for(count=0; count<=256; count++)
{
befehl[count] = buf[count];
if(buf[count]==' ')
{
befehl[count]='\0';
break;
}
}
//Befehl auslesen END
//login START
if(befehl[0]=='l'&&befehl[1]=='o'&&befehl[2]=='g'&&befehl[3]=='i'&&befehl[4]=='n')
{
//Parameter abtrennen
char par1[256];
char par2[256];
int par1_i,bla;
int par2_i;
int a;
for(par1_i=count+1,bla=0;par1_i<=256;par1_i++,bla++)
{
par1[bla] = buf[par1_i];
if(buf[par1_i]==' ')
{
par1[bla]='\0';
break;
}
}
bla=0;
for(par2_i=par1_i+1;par2_i<=256;par2_i++,bla++)
{
par2[bla] = buf[par2_i];
if(buf[par2_i]==' ')
{
par2[bla]='\0';
break;
}
}
//Parameter abtrennne END
//Benutzername suchen
for(a=1; a<=100; a++)
{
if(par1==user[a].uname){break;}
}
if(par2==user[a].pw)//Passwort vergleichen
{
user[a].status=1; //Status auf online setzen
user[a].client_id=i; //i in user [a][8] schreiben zur identifizierung
login[i]=true; //Benutzer einloggen
send(clients[i],"001",3,0); //Benutzer erfolgreichen login mitteilen
cout << user[a].uname << " (" << i << ") eingeloggt." << endl; // Servermeldung ausgeben
}
else{send(clients[i],"002",3,0);}//Benutzer Fehlerhaften login mitteilen
}
//login END
if(login[i]) //Befehle werden nur ausgeführt wenn der benutzer eingeloggt ist
{
if(befehl[0]=='s'&&befehl[1]=='e'&&befehl[2]=='n'&&befehl[3]=='d') //SEND
{
//Parameter abtennen
char par1[256];
char par2[256];
char par3[256];
int par1_i,bla;
int par2_i,par3_i;
for(par1_i=count+1,bla=0;par1_i<=256;par1_i++,bla++)
{
par1[bla] = buf[par1_i];
if(buf[par1_i]==' ')
{
par1[bla]='\0';
break;
}
}
bla=0;
for(par2_i=par1_i+1;par2_i<=256;par2_i++,bla++)
{
par2[bla] = buf[par2_i];
if(buf[par2_i]==' ')
{
par2[bla]='\0';
break;
}
}
bla=0;
for(par3_i=par2_i+1;par3_i<=256;par3_i++,bla++)
{
par3[bla] = buf[par3_i];
}
//Parameter abtrennen END
//Nachricht senden
//Nachricht senden
char tmpUserID[2];
IntToString(user[atoi(par1)].client_id, tmpUserID);
string nach_send = "send ";
nach_send += tmpUserID;
nach_send += " ";
nach_send += par3;
cout << nach_send;
send(clients[user[atoi(par1)].client_id],nach_send.c_str(), nach_send.length(),0); //Nachricht an Empfänger senden
cout << "Nachricht von " << par1 << " an " << par2 << endl; //Servermeldung ausgeben
cout << "Nachricht: " << par3 << endl; //Servermeldung ausgeben
send(clients[user[atoi(par2)].client_id],"026",3,0); //Bestätigung an sender senden. //Nachricht an Empfänger senden
cout << "Nachricht von " << par1 << " an " << par2 << endl; //Servermeldung ausgeben
cout << "Nachricht: " << par3 << endl; //Servermeldung ausgeben
send(clients[user[atoi(par2)].client_id],"026",3,0); //Bestätigung an sender senden.
}
//KICKUSER
if(befehl[0]=='k'&&befehl[1]=='i'&&befehl[2]=='c'&&befehl[3]=='k'&&befehl[4]=='u'&&befehl[5]=='s'&&befehl[6]=='e'&&befehl[7]=='r')
{
//Parameter auslesen:
char par1[256];
int par1_i,bla;
for(par1_i=count+1,bla=0;par1_i<=256;par1_i++,bla++)
{
par1[bla] = buf[par1_i];
if(buf[par1_i]==' ')
{
par1[bla]='\0';
break;
}
}
//Parameter auslesen ende;
send(clients[user[atoi(par1)].client_id],"051",3,0); //gekickten Benutzer informieren
send(clients[i],"052",3,0);
cout << user[atoi(par1)].uname << " (" << i << ") wurde gekickt!" << endl; //Servermeldung ausgeben
closesocket(clients[atoi(par1)]); //Socket schließen
clients[atoi(par1)]=INVALID_SOCKET; //Socket wieder freigeben
}
//get_contact START
else if(befehl[0]=='g'&&befehl[1]=='e'&&befehl[2]=='t'&&befehl[3]=='_'&&befehl[4]=='c'&&befehl[5]=='o'&&befehl[6]=='n'&&befehl[7]=='t'&&befehl[8]=='a'&&befehl[9]=='c'&&befehl[10]=='t')
{
//Parameter auslesen
char par1[5];
int par1_i=0,bla=0;
for(par1_i=count+1,bla=0;par1_i<=256;par1_i++,bla++)
{
par1[bla] = buf[par1_i];
if(buf[par1_i]==' ')
{
par1[bla]='\0';
break;
}
}
//parameter auslese ende;
int a;
char tmp[10];
for(a=1; a<=10; a++){if(i==user[a].id){break;}} //Name des Anfragers auslesen
cout << user[a].uname << " (" << i << ") fordert Daten von " << par1 << endl;//Servermeldung ausgeben
string tmp_senden;
IntToString(user[atoi(par1)].id,tmp);
tmp_senden = tmp;
tmp_senden += ":";
tmp_senden += user[atoi(par1)].uname;
tmp_senden += ":";
IntToString(user[atoi(par1)].status,tmp);
tmp_senden += tmp;
send(clients[i],tmp_senden.c_str(), tmp_senden.length(),0);
}
//get_contact END
else if(befehl[0]=='g'&&befehl[1]=='e'&&befehl[2]=='t'&&befehl[3]=='_'&&befehl[4]=='o'&&befehl[5]=='n')
{
string online = "222 ";//code tabelle fehlt
int tmp_i;
char tmp_string[2];
for(tmp_i=1; tmp_i <=100; tmp_i++)
{
if(user[tmp_i].status==0){continue;}
else if(user[tmp_i].status==1)
{
IntToString(tmp_i,tmp_string);
online += tmp_string; online +=":";
}
}
send(clients[i],online.c_str(), online.length(),0);
cout << "Client "<< i << ": fordert Onlinestatus" << endl;
}
}//if(login)....
else
{
send(clients[i],"000",3,0);
cout << "Client " << i << ": Login Fehlgeschlagen!" << endl;
clients[i]=INVALID_SOCKET;
}
}
}
}
}
}
[/code]
das ist der Server, den habe nicht ich geschrieben sondern jemand anders aus meiner Gruppe
#include <windows.h>
#include <winsock2.h>
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <fstream>
#include <string>
#include <sstream>
#include <fstream>
#include <iostream.h>
#include <iomanip>
#define MAX_CLIENTS 100
using namespace std;
/*Globale Variablen*/
/*Globale Variablen END*/
//Versuche zur neuen Benutzerverwaltung START
struct benutzer
{
int id;
string pw;
string uname;
int status;
int client_id;
};
//Versuche zur neuen Benuzterverwaltung END
int startWinsock(void) //Winsocks initalisieren
{
WSADATA wsa;
return WSAStartup(MAKEWORD(2,0),&wsa);
}
void IntToString(int i, char* buffer)
{
sprintf(buffer, "%d", i);
}
int main()
{
bool login[MAX_CLIENTS]; //Variable zur Überprüfung des Loginstatuses
for(int login_i=0;login_i<=MAX_CLIENTS; login_i++){login[login_i]=false;} //login komplett auf false setzen
char buf[300]; //Variable für die eingehenden Nachrichten
char befehl[300]; //Variable für den eingehenden Befehl
int count = 0; //Hilfs-Laufzeitvariable
int i; //Hilfs-Laufzeitvariable
string datensatz; //Hilfsvariable um die Benutzerdaten auszulesen
int userid; // - " " -
struct benutzer user[MAX_CLIENTS]; //Beinhaltet die Userdaten
long rc;
SOCKET acceptSocket;
SOCKADDR_IN addr;FD_SET fdSet;
SOCKET clients[MAX_CLIENTS]; //Enthält den jeweiliegen zustande des clients i
ifstream in("user.dat"); //Die benutzerdatei Einlesen
int init_status_i;
for(init_status_i=0; init_status_i<=100;init_status_i++)
{
user[init_status_i].status=0;
}
while(getline(in, datensatz, ':'))
{//Benutzerdatei einlese und in user[x][y] schreiben Anfang
if(count==0){
userid = atoi (datensatz.c_str());
}
switch(count)
{
case 0:
user[userid].id=userid;
break;
case 1:
user[userid].uname=datensatz;
break;
case 2:
user[userid].pw=datensatz;
break;
case 3:
count=-1;
break;
}
count++;
}//Benutzerdatei einlese ende.
cin.get();
cout << user[2].id << endl;
cout << user[2].pw << endl;
cout << user[2].uname << endl;
cout << user[2].status << endl;
cin.get();
// Winsock starten
rc=startWinsock();
if(rc!=0)
{
cout << "Fehler: startWinsock, fehler code: "<< rc << endl;
}
else
{
cout << "Winsock gestartet!" << endl;
}
// Socket erstellen
acceptSocket=socket(AF_INET,SOCK_STREAM,0);
if(acceptSocket==INVALID_SOCKET)
{
cout << "Fehler: Der Socket konnte nicht erstellt werden, fehler code: " << WSAGetLastError() << endl;
return 1;
}
else
{
cout << "Socket erstellt!" << endl;
}
// Socket binden
memset(&addr,0,sizeof(SOCKADDR_IN));
addr.sin_family=AF_INET;
addr.sin_port=htons(5432); // Angabe des Ports
addr.sin_addr.s_addr=INADDR_ANY;
rc=bind(acceptSocket,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN));
if(rc==SOCKET_ERROR)
{
cout << "Fehler: bind, fehler code: " << WSAGetLastError() << endl;
return 1;
}
else
{
cout << "Socket an port 5432 gebunden" << endl;
}
// In den listen Modus wechseln.
//Auf eingehende Verbindungen warten.
rc=listen(acceptSocket,10);
if(rc==SOCKET_ERROR)
{
cout << "Fehler: listen, fehler code: " << WSAGetLastError() << endl;
return 1;
}
else
{
cout << "acceptSocket ist im listen Modus" << endl;
}
//clients array auf INVALID_SOCKET setzen
//invalid_socket entspricht keiner Verbindung.
for(i=1;i<MAX_CLIENTS;i++)
{
clients[i]=INVALID_SOCKET;
}
while(true) // Endlosschleife
{
FD_ZERO(&fdSet); // Inhalt leeren
FD_SET(acceptSocket,&fdSet); // Den Socket der verbindungen annimmt hinzufügen
// alle gültigen client sockets hinzufügen (nur die die nicht INVALID_SOCKET sind)
for(i=1;i<MAX_CLIENTS;i++)
{
if(clients[i]!=INVALID_SOCKET)
{
FD_SET(clients[i],&fdSet);
}
}
rc=select(0,&fdSet,NULL,NULL,NULL);
if(rc==SOCKET_ERROR)
{
cout << "Fehler: select, fehler code: " << WSAGetLastError() << endl;
return 1;
}
// acceptSocket is im fd_set? => verbindung annehmen (sofern es platz hat)
if(FD_ISSET(acceptSocket,&fdSet)) {
// einen freien platz für den neuen client suchen, und die verbingung annehmen
for(i=1;i<MAX_CLIENTS;i++)
{
if(clients[i]==INVALID_SOCKET)
{
clients[i]=accept(acceptSocket,NULL,NULL);
cout << "Neuen Client angenommen ("<< i << ")" << endl;
break;
}
}
}
// prüfen wlecher client sockets im fd_set sind
for(i=1;i<MAX_CLIENTS;i++)
{
if(clients[i]==INVALID_SOCKET)
{
continue; // ungültiger socket, d.h. kein verbunder client an dieser position im array
}
if(FD_ISSET(clients[i],&fdSet))
{
rc=recv(clients[i],buf,256,0);
// prüfen ob die verbindung geschlossen wurde oder ein fehler auftrat
if(rc==0 || rc==SOCKET_ERROR)
{
cout << "Client " << i <<" hat die Verbindung geschlossen" << endl;
login[i]=false; // Benutzer ausloggen
closesocket(clients[i]); // socket schliessen
clients[i]=INVALID_SOCKET; // seinen platz wieder freigeben
}
else
{
buf[rc]='\0'; // Buffer für eingehende befehle lehren
//Befehl auslesen und in befehl[] schreiben
for(count=0; count<=256; count++)
{
befehl[count] = buf[count];
if(buf[count]==' ')
{
befehl[count]='\0';
break;
}
}
//Befehl auslesen END
//login START
if(befehl[0]=='l'&&befehl[1]=='o'&&befehl[2]=='g'&&befehl[3]=='i'&&befehl[4]=='n')
{
//Parameter abtrennen
char par1[256];
char par2[256];
int par1_i,bla;
int par2_i;
int a;
for(par1_i=count+1,bla=0;par1_i<=256;par1_i++,bla++)
{
par1[bla] = buf[par1_i];
if(buf[par1_i]==' ')
{
par1[bla]='\0';
break;
}
}
bla=0;
for(par2_i=par1_i+1;par2_i<=256;par2_i++,bla++)
{
par2[bla] = buf[par2_i];
if(buf[par2_i]==' ')
{
par2[bla]='\0';
break;
}
}
//Parameter abtrennne END
//Benutzername suchen
for(a=1; a<=100; a++)
{
if(par1==user[a].uname){break;}
}
if(par2==user[a].pw)//Passwort vergleichen
{
user[a].status=1; //Status auf online setzen
user[a].client_id=i; //i in user [a][8] schreiben zur identifizierung
login[i]=true; //Benutzer einloggen
send(clients[i],"001",3,0); //Benutzer erfolgreichen login mitteilen
cout << user[a].uname << " (" << i << ") eingeloggt." << endl; // Servermeldung ausgeben
}
else{send(clients[i],"002",3,0);}//Benutzer Fehlerhaften login mitteilen
}
//login END
if(login[i]) //Befehle werden nur ausgeführt wenn der benutzer eingeloggt ist
{
if(befehl[0]=='s'&&befehl[1]=='e'&&befehl[2]=='n'&&befehl[3]=='d') //SEND
{
//Parameter abtennen
char par1[256];
char par2[256];
char par3[256];
int par1_i,bla;
int par2_i,par3_i;
for(par1_i=count+1,bla=0;par1_i<=256;par1_i++,bla++)
{
par1[bla] = buf[par1_i];
if(buf[par1_i]==' ')
{
par1[bla]='\0';
break;
}
}
bla=0;
for(par2_i=par1_i+1;par2_i<=256;par2_i++,bla++)
{
par2[bla] = buf[par2_i];
if(buf[par2_i]==' ')
{
par2[bla]='\0';
break;
}
}
bla=0;
for(par3_i=par2_i+1;par3_i<=256;par3_i++,bla++)
{
par3[bla] = buf[par3_i];
}
//Parameter abtrennen END
//Nachricht senden
//Nachricht senden
char tmpUserID[2];
IntToString(user[atoi(par1)].client_id, tmpUserID);
string nach_send = "send ";
nach_send += tmpUserID;
nach_send += " ";
nach_send += par3;
cout << nach_send;
send(clients[user[atoi(par1)].client_id],nach_send.c_str(), nach_send.length(),0); //Nachricht an Empfänger senden
cout << "Nachricht von " << par1 << " an " << par2 << endl; //Servermeldung ausgeben
cout << "Nachricht: " << par3 << endl; //Servermeldung ausgeben
send(clients[user[atoi(par2)].client_id],"026",3,0); //Bestätigung an sender senden. //Nachricht an Empfänger senden
cout << "Nachricht von " << par1 << " an " << par2 << endl; //Servermeldung ausgeben
cout << "Nachricht: " << par3 << endl; //Servermeldung ausgeben
send(clients[user[atoi(par2)].client_id],"026",3,0); //Bestätigung an sender senden.
}
//KICKUSER
if(befehl[0]=='k'&&befehl[1]=='i'&&befehl[2]=='c'&&befehl[3]=='k'&&befehl[4]=='u'&&befehl[5]=='s'&&befehl[6]=='e'&&befehl[7]=='r')
{
//Parameter auslesen:
char par1[256];
int par1_i,bla;
for(par1_i=count+1,bla=0;par1_i<=256;par1_i++,bla++)
{
par1[bla] = buf[par1_i];
if(buf[par1_i]==' ')
{
par1[bla]='\0';
break;
}
}
//Parameter auslesen ende;
send(clients[user[atoi(par1)].client_id],"051",3,0); //gekickten Benutzer informieren
send(clients[i],"052",3,0);
cout << user[atoi(par1)].uname << " (" << i << ") wurde gekickt!" << endl; //Servermeldung ausgeben
closesocket(clients[atoi(par1)]); //Socket schließen
clients[atoi(par1)]=INVALID_SOCKET; //Socket wieder freigeben
}
//get_contact START
else if(befehl[0]=='g'&&befehl[1]=='e'&&befehl[2]=='t'&&befehl[3]=='_'&&befehl[4]=='c'&&befehl[5]=='o'&&befehl[6]=='n'&&befehl[7]=='t'&&befehl[8]=='a'&&befehl[9]=='c'&&befehl[10]=='t')
{
//Parameter auslesen
char par1[5];
int par1_i=0,bla=0;
for(par1_i=count+1,bla=0;par1_i<=256;par1_i++,bla++)
{
par1[bla] = buf[par1_i];
if(buf[par1_i]==' ')
{
par1[bla]='\0';
break;
}
}
//parameter auslese ende;
int a;
char tmp[10];
for(a=1; a<=10; a++){if(i==user[a].id){break;}} //Name des Anfragers auslesen
cout << user[a].uname << " (" << i << ") fordert Daten von " << par1 << endl;//Servermeldung ausgeben
string tmp_senden;
IntToString(user[atoi(par1)].id,tmp);
tmp_senden = tmp;
tmp_senden += ":";
tmp_senden += user[atoi(par1)].uname;
tmp_senden += ":";
IntToString(user[atoi(par1)].status,tmp);
tmp_senden += tmp;
send(clients[i],tmp_senden.c_str(), tmp_senden.length(),0);
}
//get_contact END
else if(befehl[0]=='g'&&befehl[1]=='e'&&befehl[2]=='t'&&befehl[3]=='_'&&befehl[4]=='o'&&befehl[5]=='n')
{
string online = "222 ";//code tabelle fehlt
int tmp_i;
char tmp_string[2];
for(tmp_i=1; tmp_i <=100; tmp_i++)
{
if(user[tmp_i].status==0){continue;}
else if(user[tmp_i].status==1)
{
IntToString(tmp_i,tmp_string);
online += tmp_string; online +=":";
}
}
send(clients[i],online.c_str(), online.length(),0);
cout << "Client "<< i << ": fordert Onlinestatus" << endl;
}
}//if(login)....
else
{
send(clients[i],"000",3,0);
cout << "Client " << i << ": Login Fehlgeschlagen!" << endl;
clients[i]=INVALID_SOCKET;
}
}
}
}
}
}
[/code]
das ist der Server, den habe nicht ich geschrieben sondern jemand anders aus meiner Gruppe