Witam. Piszę mały serwer i klienta, do przesyłania danych używam funkcji send. Co jeśli nie chciałbym jednak tego robić?
Tzn. chodzi mi o to że z klienta chciałbym wysłać "coś" wywołującego funkcję na serwerze. Wydaje mi się że wysyłanie sendem jakiegoś tekstu, sprawdzanie go na serwerze i porównywanie z tym wywołującym funkcję jest nieodpowiednie.
No to wyślij liczbę i ją sprawdzaj po stronie serwera. Chyba nie ma innego wyjścia. Oczywiście liczbę wyślij binarnie a nie tekstowo.
Ok. Jeszcze jedno pytanko, mianowicie jak mogę przetestować jego wydajność? Serwer ma jedną pętlę sprawdzającą podłączonych klientów, ich zadaniem jest przekazanie jednej wartości i zapisanie jej przez serwer. Ile klientów na oko może połączyć się w tym samym czasie? Jak zwiększyć wydajność? Dorobić więcej sprawdzających wątków?
Oczywiście nie calluj funkcji poprzez ify/switche, tylko zrób tablicę z funkcjami i po indeksie to rób, np:
#include <iostream>
using namespace std;
void foo0()
{
printf("foo0\n");
}
void foo1()
{
printf("foo1\n");
}
void foo2()
{
printf("foo2\n");
}
int main() {
void (*functions[])(void) = {
&foo0,
&foo1,
&foo2
};
functions[0]();
functions[2]();
functions[1]();
return 0;
}
Co do samej wydajności, na pewno musisz odbieranie i wysyłanie pakietów zaimplementować w oddzielnym wątku. Ile klientów może się łączyć? W teorii nieskończoność, w praktyce na tyle ile zasoby serwera starczą.