Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



UDP сервер

Сообщений 1 страница 10 из 10

1

Всем добрый день.
Есть некое устройство, которое может посылать данные через инет по протоколу UDP.
Бьюсь уже какой день и сломал весь мозг.
Может кто разворачивал такие сервера хотя бы на локальной машине, а в идеале на каком либо хостинге.
Как до него достучаться я знаю, а вот как забрать данные и поместить их, например, на страничку сайта, а ещё лучше в базу MySQL вот в чём вопрос?

0

2

Прием на ПК?

0

3

Yuriy.pv написал(а):

Прием на ПК?

Для теста можно на ПК, но лучше сразу на удалённом сервере

0

4

Можно попробовать на php если сервер держит , но на роутере провайдера  должен быть проброшен порт, для приёма UDP-пакетов

0

5

Yuriy.pv написал(а):

но на роутере провайдера  должен быть проброшен порт, для приёма UDP-пакетов

Только что пообщался со своим хостером. У них трафик по UDP закрыт.
Буду искать другого,но скорее всего они не хотят связываться с ним.
Сейчас попробую на локалке с помощью TCP/IP Builder.

0

6

sva-don написал(а):

Только что пообщался со своим хостером. У них трафик по UDP закрыт.
Буду искать другого,но скорее всего они не хотят связываться с ним.
Сейчас попробую на локалке с помощью TCP/IP Builder.

Он оказался только для локальной сети. В инете работать отказывается.  o.O

0

7

Бывает  8-)

0

8

sva-don написал(а):

Может кто разворачивал такие сервера хотя бы на локальной машине

Запустить такой сервер на компе не составляет проблем. Что-то типа

Код:
InitNetwork()

CreateNetworkServer(0, 1234, #PB_Network_UDP | #PB_Network_IPv4)

А дальше пишется код приема/передачи данных.

sva-don написал(а):

в идеале на каком либо хостинге.

Не все поддерживают UDP. Вероятно понадобится выделенный сервер с соответствующей стоимостью аренды...

sva-don написал(а):

Он оказался только для локальной сети. В инете работать отказывается.

Порт открыть не забыли? Провайдер не блокирует?

0

9

Пётр написал(а):

Запустить такой сервер на компе не составляет проблем. Что-то типа

Я начитался о них до одури, но так и не понял. Например вот этот код куда нужно воткнуть?  o.O
С хостерами пообщался, почти никто не допускает UDP.
С TCP/IP Builder справился, всё дело было в файерволе. Он его тупо не пускал. Создал правило и всё пошло, но только от модуля на сервер.
В обратную сторону пока не получается.
Мой модуль поддерживает и TCP, вчера наскоком не получилось, надо разобраться с командами и вдумчиво попробовать.

0

10

sva-don написал(а):

Например вот этот код куда нужно воткнуть?

Вот сюда. https://www.purebasic.com/download.php
Код в предыдущем сообщении только создает сервер без обработки сообщений. Его нужно немного дополнить.

Код:
InitNetwork()

#BuffSize = 2048

*Buff = AllocateMemory(#BuffSize)

If CreateNetworkServer(0, 1234, #PB_Network_UDP | #PB_Network_IPv4) = 0
  MessageRequester("", "Не удалось запустить сервер")
  End
EndIf

Repeat
  SEvent = NetworkServerEvent() ; События сервера.
  
  If SEvent
    ClientID = EventClient() ; Идентификатор клиента.
    
    Select SEvent
      Case #PB_NetworkEvent_Connect
        Debug "Подключился клиент с идентификатором "+ClientID
      Case #PB_NetworkEvent_Data
        Debug "Клиент с ИД "+ClientID+" прислал данные"
        
        CountBytes = ReceiveNetworkData(ClientID, *Buff, #BuffSize) ; Принимаем данные.
        If CountBytes>0
          SendNetworkData(ClientID, *Buff, CountBytes) ; Отправляем обратно принятые данные.
        EndIf
        
    EndSelect

  Else
    Delay(2)
  EndIf
ForEver

Этот код создает UDP сервер на 1234 порту и отправляет назад все принятые данные.
Можно аналогичный код написать на многих других ЯП. Но это если программа запускается на компе. В случае хостера возможно удастся договориться о запуске своей программы на выделенном сервере.

+2