Сложно написать название темы, но суть вот в чем. Нужно сделать возможность, чтобы множество программ обменивались потоком данных по сети. При этом нужно сделать так, чтобы они подключались к серверу, через этот сервер находили друг друга и передавали бы данные. Как сделать используя сервер понятно - на сервер отправить, сервер передаст по адресу назначения, но тогда сервер может оказаться перегруженным. Можно ли сделать так, чтобы сервер передал, например, адрес клиенту того, к кому этот клиент хочет подключиться и тот передавал бы по назначению напрямую? Если бы компьютеры были в одной сети, проблем бы не было, но можно ли это сделать так, чтобы клиенты обменивались между собой через шлюз не настраивая NAT (ну максимум, вписать в межсетевой экран номер порта). Писать буду на C#, используя Listener, TcpClient, Socket. |