Mam sobie taki serwer, który tam wyrzeźbiłem z ciężkim sercem:
//---------------------------------------------------------------------------
#include <winsock.h>
#include <string>
#include <iostream>
#include <vcl.h>
#include <dos.h>
//#pragma hdrstop
using namespace std;
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
WSADATA wsadata;
SOCKET listening, client;
SOCKADDR_IN address, client_address;
int port = 9000;
int address_length;
char message[512];
string content;
cout << "Server start" << endl;
sleep(1);
cout << "Port: " << port << endl;
sleep(1);
cout << "Listening..." << endl;
WSAStartup(MAKEWORD(2,2), &wsadata);
listening = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
address.sin_family = AF_INET;
address.sin_port = htons(port);
address.sin_addr.s_addr = htonl(INADDR_ANY);
bind(listening, (struct sockaddr*)&address, sizeof(address));
listen(listening, 10);
address_length = sizeof(client_address);
client = accept(listening, (struct sockaddr*)&client_address, &address_length);
while(1) {
for(int i = 0 ; i < sizeof(message) ; i++) {
char c[1] = "";
message[i] = c[0];
}
recv(client, message, sizeof(message), 0);
content = message;
cout << content.c_str() << endl;
sleep(2);
}
closesocket(client);
WSACleanup();
return 0;
}
//---------------------------------------------------------------------------
Chciałbym by każdy nowo dołączony klient miał swój wątek i po zakończeniu transmisji żeby ten wątek został zamknięty. To kod powinienem wstawić do funkcji accept ? żeby kierował do nowego wątku i przesyłał tam dane ? Mógłby ktoś podpowiedzieć ?