Serwer na WinSock2

0

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.

0

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.

0

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?

0

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ą.

1 użytkowników online, w tym zalogowanych: 0, gości: 1