Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2012, 13:19   #1
Nikita_Serg
 
Регистрация: 07.05.2012
Сообщений: 3
По умолчанию UDP Клиент - сервер. Фильтрация IP на сервере

PC1 , PC2, PC3 генерируют изображение и я его передаю PC MAIN . PC МAIN должен принимать изобаржение только из выбраного IP ( список ip в листбоксе, который я сам заполняю ) и отображать его у себя в пикчербоксе. Клиентская часть работает безупречно. А вот как заставить сервер принимать данные только с выбраного IP.
Код которыми PC1 , PC2, PC3 отправляют изображения PC MAIN (код клиента)

Код:
   UdpClient udpClient = new UdpClient();
            IPAddress ipAddress = IPAddress.Parse("192.168.10.1");
            IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 5006);
            MemoryStream memoryStream = new MemoryStream();
            image.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Jpeg);
            byte[] sendBytes = memoryStream.ToArray();
          
            try
            {
 
                udpClient.Send(sendBytes, sendBytes.Length, ipEndPoint);
 
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                memoryStream.Close();
                udpClient.Close();
            }
Код серверной части. Именно тут проблемы. Как заставить его принимть данные только с отдельного IP?
Код:
 UdpClient recivingudpClient = new UdpClient(5006);// вот тут пишем какой порт слушать
            IPEndPoint RmoteIPEnd = null;
            try
            {
                byte[] reciverBytes = recivingudpClient.Receive(ref RmoteIPEnd);
                MemoryStream ms = new MemoryStream(reciverBytes);
                pictureBox2.Image = Image.FromStream(ms);
                recivingudpClient.Close();
 
 
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
Изображения
Тип файла: jpg Без имени-1.jpg (115.8 Кб, 90 просмотров)
Nikita_Serg вне форума Ответить с цитированием
Старый 10.05.2012, 11:28   #2
Nikita_Serg
 
Регистрация: 07.05.2012
Сообщений: 3
По умолчанию

эмм... походу туговато продвигается вопрос) Ладно, тогда давайте пойдем другим путем, а можно определить на сервере MAC клиента и именно по МАКу фильтровать? А? Вот немного почитал и увидел что протокол DHCP может передавать МАК и работает он на основе UDP. Мож кто знает как с ним работать ?

Одним словом надо чтобы сервер мог выбирать с какого клиента принимать данные. Выход конечно есть - это поставить каждый клиент на разный порт и серверу принимать просто с нужного порта, но мне кажется это как то примитивно, и занимать кучу портов не продумано и халатно...

Последний раз редактировалось Nikita_Serg; 10.05.2012 в 11:38.
Nikita_Serg вне форума Ответить с цитированием
Старый 10.05.2012, 11:35   #3
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Код:
byte[] reciverBytes = recivingudpClient.Receive(ref RmoteIPEnd);
после выполения этой строчки в RmoteIPEnd должен быть записан IP удалённого хоста, с которого пришли данные. По нему и фильтровать.


> можно определить на сервере MAC

можно, но не штатными средствами шарпа. Гуглите raw sockets.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 10.05.2012, 11:52   #4
Nikita_Serg
 
Регистрация: 07.05.2012
Сообщений: 3
По умолчанию

Цитата:
Сообщение от veniside Посмотреть сообщение
Код:
byte[] reciverBytes = recivingudpClient.Receive(ref RmoteIPEnd);
после выполения этой строчки в RmoteIPEnd должен быть записан IP удалённого хоста, с которого пришли данные. По нему и фильтровать.


> можно определить на сервере MAC

можно, но не штатными средствами шарпа. Гуглите raw sockets.
ох, спасибки) как раз то что надо.
Nikita_Serg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
UDP сервер Артэс C/C++ Сетевое программирование 2 07.10.2011 16:09
Как отправить видео захват(с веб-Кам.) Клиент->Сервер->Клиент RODNOC Мультимедиа в Delphi 17 03.10.2010 22:31
UDP клиент-сервер. Пакет neon2k Общие вопросы .NET 1 27.06.2010 11:53
Возможно-ли Клиент-серверное приложение типа Клиент(Pascal) а сервер(CGI)? Demol Работа с сетью в Delphi 1 21.04.2009 16:18