@tex620

Как сделать проксирование udp на с#?

Сделал udp клиент на порту 10000, нужно проксировать все пакеты клиентов на некий targetip:port. С этим проблем нету.
Но когда сервер возвращает ответ, то как понять какому из клиентов его отправить?
public class UdpProxy
    {
        private IPEndPoint target;
        private UdpClient client;

        int localport;
        private Task proxy;
        public UdpProxy(string targetaddress, ushort localport)
        {
            this.target = IPEndPoint.Parse(targetaddress);
            this.client = new UdpClient(new IPEndPoint(IPAddress.Any, localport));
            this.localport = localport;
        }

        public void StartProxy()
        {
            this.proxy = Task.Factory.StartNew(() => {
                IPEndPoint _IPEndPoint = null;
                while (true) { 
                    try
                    {
                        if (client.Available > 0)
                        {
                            byte[] _bytes = client.Receive(ref _IPEndPoint);
                            
                            if (_IPEndPoint == target)
                            {
                                //server to client
                                //???
                            } else
                            {
                                //client to server
                                client.Send(_bytes, _bytes.Length, target);
                            }
                        }
                        Thread.Sleep(5);
                    } catch (Exception e) { }
                }
            });
        }
  • Вопрос задан
  • 283 просмотра
Пригласить эксперта
Ответы на вопрос 1
для каждой пары ip:port клиента открывать отдельный слушающий сокет (на отдельном порту) в сторону сервера.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы