Witam,
no i padło na mnie. Muszę napisać aplikację sieciową w zacnym języku CPP. Mało czasu i zbyt duży nawał innych zajęć zmusił mnie do prężnej nauki socketów. Udało mi się coś sklecić z pomocą tutków. Tylko jest problem. Mam dwóch klientów łączących się do serwera. Klienci wysyłają wiadomości, serwer je odbiera, wyświetla i jest wszystko pięknie. Tylko jak chce przekazać wiadomość od klienta a do klienta b to wtedy się dzieją cuda.
Czy dla klienta też trzeba zrobić dwa osobne procesy do wysyłania i odbierania? Za wszelkie sugestie i podpowiedzi będę wielce wdzięczny.
Pozdrawiam
Klient
int wysylanie() {
string IP,nick ;
cout << "Podaj IP serwera\n";
cin >>IP;
cout << "Podaj nick: " ;
cin >> nick;
try
{
while(true) {
ClientSocket client_socket ( "IP", 30000 );
char reply[100];
string data;
client_socket << nick;
try
{
cout << "Wyslij: ";
cin.getline(reply, sizeof(reply));
client_socket << reply;
client_socket >> data;
cout << data;
}
catch ( SocketException& ) {}
}
}
catch ( SocketException& e )
{
cout << "Exception was caught:" << e.description() << "\n";
}
return 0;
}
Serwer
int main ()
{
try
{
ServerSocket server ( 30000 );
switch(fork()){
case -1:
cout << "Nie mozna utworzyc procesu.\n" ;
exit(1);
break;
case 0:
while (true) {
server.accept ( new_sock );
new_sock >> nick;
try
{
while ( true )
{
new_sock >> data;
cout << nick << ": "<< data << endl;
bufor = data;
}
}
catch ( SocketException& ) {}
}
break;
default:
while (true) {
server.accept ( new_sock1 );
new_sock1 >> nick1;
try
{
while ( true )
{
new_sock1 >> data1;
cout << nick1 << ": " << data1 << endl;
new_sock1 << bufor;
}
}
catch ( SocketException& ) {}
}
break;
}
}
catch ( SocketException& e )
{
cout << "Exception was caught:" << e.description() << "\nExiting.\n";
}
return 0;
}