Всем привет!
Ребята, нужна помощь.
Гуглил, гуглил... ничего не на гуглил(((Ниже приведен исходник эхо сервера:
eservd.cpp
int SERVER_SOCKET;
int CLIENT_SOCKET;
struct sockaddr_in SERVER_ADDR;
struct sockaddr_in CLIENT_ADDR;
char i_buffer[1024];
socklen_t CLIENT_ADDR_SIZE = sizeof(CLIENT_ADDR);using namespace std;
int main ()
{
bzero(&SERVER_ADDR, sizeof(SERVER_ADDR));
SERVER_SOCKET = socket(AF_INET, SOCK_STREAM, 0);
bind(SERVER_SOCKET, (struct sockaddr *)&SERVER_ADDR, sizeof(SERVER_ADDR));
listen(SERVER_SOCKET, SERVER_MAX_CONN);
for(;;)
{
CLIENT_SOCKET = accept(SERVER_SOCKET, (struct sockaddr *)&CLIENT_ADDR, &CLIENT_ADDR_SIZE);
if(fork() == 0)
{
for(;;)
{
if(recv(CLIENT_SOCKET, &i_buffer, sizeof(i_buffer), 0) == 0) return 0;
send(CLIENT_SOCKET, i_buffer, sizeof(i_buffer), 0);
}
}
close (CLIENT_SOCKET);
}
close (SERVER_SOCKET);
return 0;
}
Как все понимают, эта программа принимает строку от клиента и отражает ее обратно.
Цель:
Сервер должен отражать принятую строку не только тому клиенту который ее послал, а всем подключенным клиентам в этот момент времени.
Вопросы:
1. Как узнать число подключенных клиентов к серверу?
2. Как отправлять данные конкретно какому-либо клиенту подключенному к серверу.
Думаю, что ответы на поставленные мной вопросы решат поставленную мною задачу.
Заранее спасибо.