Witam, otóż pisze program typu klient-serwer w konsoli, nie wiem jak zrobić tak abym mogł cały czas odbierać
dane i wysyłać równoczesnie (tak jak na czacie). Czytałem że trzeba zrobić ćos z wątkami, ale kompletnie nie
wiem o co z tym chodzi, więc jeżeli ktoś mogłby mi pokazać jakiś przykład z tym lub zmodyfikować odpowiednio
mój poniższy kod to będe wdzięczny.
SERWER:
#include <conio.h>
#include <iostream>
#include <winsock.h>
using namespace std;
char bufor[100];
void wyczysc(char bufor[])
{
for(int i=0;i<sizeof(bufor);i++)
{
bufor[i]=' ';
}
}
main()
{
WSADATA wsaData;
SOCKET sock_serwer,sock_klient;
struct sockaddr_in sock_in;
int rozmiar = sizeof(sock_in);
char nick[9],nick_2[9];
WSAStartup(MAKEWORD(2,0), &wsaData );
sock_serwer=socket(AF_INET, SOCK_STREAM, 0);
sock_in.sin_family = AF_INET;
sock_in.sin_addr.S_un.S_addr=inet_addr( "127.0.0.1" );
sock_in.sin_port = htons(10001);
memset(sock_in.sin_zero, 0, 8);
bind(sock_serwer,(sockaddr *)&sock_in, sizeof(sock_in));
listen(sock_serwer,2);
sock_klient = accept(sock_serwer,(sockaddr *)&sock_in, &rozmiar);
cout << "Podaj swoj nick: ";
cin.getline(nick_2,sizeof(nick_2));
cout << "Twoj nick to: " << nick_2 << endl;
send(sock_klient,nick_2,sizeof(nick_2),0);
recv(sock_klient,nick,sizeof(nick),0);
cout << endl;
do
{
cout << "Wpisz tekst: ";
cin.getline(bufor,sizeof(bufor));
send(sock_klient,bufor,sizeof(bufor),0);
recv(sock_klient,bufor,sizeof(bufor),0);
if(bufor[0]!=' ')
{
cout << nick << " napisal: " << bufor << endl;
}
wyczysc(bufor);
}
while(true);
getch();
closesocket( sock_serwer );
closesocket( sock_klient );
WSACleanup();
}
KLIENT:
#include <winsock.h>
#include <conio.h>
#include <iostream>
using namespace std;
char bufor[100];
void wyczysc(char bufor[])
{
for(int i=0;i<sizeof(bufor);i++)
{
bufor[i]=' ';
}
}
main()
{
WSADATA wsaData;
int blad,rozmiar;
char nick[9],nick_2[9];
SOCKET sock_klient;
struct sockaddr_in sock_in;
WSAStartup(MAKEWORD(2,0), &wsaData );
sock_klient = socket( AF_INET, SOCK_STREAM, 0 );
sock_in.sin_family = AF_INET;
sock_in.sin_addr.S_un.S_addr=inet_addr( "127.0.0.1" );
sock_in.sin_port = htons(10001);
connect(sock_klient,(sockaddr *) &sock_in, sizeof(sock_in));
recv(sock_klient,nick_2,sizeof(nick_2),0);
cout << "Podaj swoj nick: ";
cin.getline(nick,sizeof(nick));
cout << "Twoj nick to: " << nick << endl;
send(sock_klient,nick,sizeof(nick),0);
do
{
cout << "Wpisz tekst: ";
cin.getline(bufor,sizeof(bufor));
send(sock_klient,bufor,sizeof(bufor),0);
recv(sock_klient,bufor,sizeof(bufor),0);
if(bufor[0]!=' ')
{
cout << nick << " napisal: " << bufor << endl;
}
wyczysc(bufor);
}
while(true);
getch();
closesocket( sock_klient );
WSACleanup();
}