port 5500 vs code как исправить
Port 5500 stopped working #51178
Comments
dmiller72 commented Jun 5, 2018
We have written the needed data into your clipboard because it was too large to send. Please paste.
When I save a change now it just ahngs in the reloading stage. I’ve even goten an erro a few times suggesting to change the port. I’ve restaed both the program and my computer a couple of times.
VS Code version: Code 1.23.1 (d0182c3, 2018-05-10T17:11:17.614Z)
OS version: Windows_NT x64 10.0.17134
System Info
Item | Value |
---|---|
CPUs | Pentium(R) Dual-Core CPU E5400 @ 2.70GHz (2 x 2700) |
GPU Status | 2d_canvas: enabled flash_3d: enabled flash_stage3d: enabled flash_stage3d_baseline: enabled gpu_compositing: enabled multiple_raster_threads: disabled_off native_gpu_memory_buffers: disabled_software rasterization: unavailable_software video_decode: unavailable_software video_encode: enabled vpx_decode: unavailable_software webgl: enabled webgl2: enabled |
Memory (System) | 2.97GB (0.64GB free) |
Process Argv | C:\Program Files\Microsoft VS Code\Code.exe |
Screen Reader | no |
VM | 0% |
Extensions (26)
Extension | Author (truncated) | Version |
---|---|---|
vscode-javascript-snippet-pack | aka | 0.1.5 |
path-intellisense | chr | 1.4.2 |
bracket-pair-colorizer | Coe | 1.0.58 |
vscode-svgviewer | css | 1.4.4 |
prettier-vscode | esb | 1.4.0 |
auto-close-tag | for | 0.5.6 |
auto-rename-tag | for | 0.0.15 |
live-html-previewer | hdg | 0.3.0 |
beautify | Hoo | 1.3.0 |
html-tag-wrapper | hwe | 0.2.3 |
open-in-browser | igo | 0.0.99 |
vscode-colorize | kam | 0.6.20 |
vscode-github | Kni | 0.28.1 |
wrapSelection | kon | 0.6.8 |
code-beautifier | mic | 2.0.3 |
view-in-browser | qin | 0.0.5 |
live-sass | rit | 1.3.0 |
LiveServer | rit | 4.1.0 |
vscode-icons | rob | 7.23.0 |
sass-indented | rob | 1.4.9 |
code-settings-sync | Sha | 2.9.2 |
html5-boilerplate | sid | 1.0.3 |
code-spell-checker | str | 1.6.10 |
change-case | wma | 1.0.0 |
JavaScriptSnippets | xab | 1.6.0 |
html-css-class-completion | Zig | 1.17.1 |
The text was updated successfully, but these errors were encountered:
We are unable to convert the task to an issue at this time. Please try again.
The issue was successfully created but we are unable to update the comment at this time.
Error on port 5500. Please try to change the port through settings or report on GitHub. #237
Comments
BolajiAyodeji commented Nov 21, 2018
I’m submitting a.
Current behavior
Expected behavior
Environment
Others
The text was updated successfully, but these errors were encountered:
We are unable to convert the task to an issue at this time. Please try again.
The issue was successfully created but we are unable to update the comment at this time.
jetpack3331 commented Dec 2, 2018
What error do you see? Did you tried to change the port?
Almah2288 commented Sep 1, 2019 •
5.select the Edit in settings.json, add this line off codes:
«liveServer.settings.port»: 0,
and
«liveServer.settings.multiRootWorkspaceName»: «0»
this should resolve the issue.
abhi7585 commented Sep 8, 2019
It is showing Error : 50590
Almah2288 commented Sep 8, 2019
After the issue I reloaded the program and right clicked then selected the open with browser tab and it worked fine.
4roch4 commented Oct 23, 2019
I had this error. I resolved by removing the «» liveServer.settings.useBrowserPreview «: true,» configuration from the Live Server configuration file.
<
«liveServer.settings.CustomBrowser»: «chrome»,
«liveServer.settings.donotVerifyTags»: true,
«liveServer.settings.port»: 0,
«liveServer.settings.multiRootWorkspaceName»: «»,
«liveServer.settings.useBrowserPreview»: true,
«liveServer.settings.fullReload»: true,
«liveServer.settings.useLocalIp»: true
>
After:
<
«liveServer.settings.CustomBrowser»: «chrome»,
«liveServer.settings.donotVerifyTags»: true,
«liveServer.settings.port»: 0,
«liveServer.settings.multiRootWorkspaceName»: «»,
«liveServer.settings.fullReload»: true,
«liveServer.settings.useLocalIp»: true
>
I hope it helps someone.
surya2252 commented Feb 21, 2020
i am using vs code while my creating my first html file i am getting port error 61960.
how to solve the issue
threeeyedspider commented Jun 27, 2020
@4roch4 Can’t thank you enough. I’ve been fighting with this for hours until your code worked perfect! Thanks again!
kevreynoso commented Mar 8, 2021
5.select the Edit in settings.json, add this line off codes:
«liveServer.settings.port»: 0,
and
«liveServer.settings.multiRootWorkspaceName»: «0»
this should resolve the issue.
Thank you. a million thanks!
leokattah commented Mar 24, 2021
I followed the step by step, but I was unsuccessful. Now it is appearing in the Status Bar «Port: 50254 (disabled or without service). Before following the step by step the same message appeared, however» Port: 5500 (disabled or without service).
I am currently using vccode-preview-server successfully.
DonPrincey commented Aug 10, 2021
if your live server is not working this is 2 steps either you reinstall or go to where the file is located in your first open with another browser (open with >) then go to your vs code go to settings type LIVE SERVER then click on the 3rd section then, live server settings: custom
pick chrome or any other browser of your choice then close vs code and reopen. Now you can load your live server
Расширение Debugger for Chrome для VS Code
Расширение предназначено для отладки js-кода в редакторе VS Code с использованием Chrome DevTools протокола. Это альтернатива тому, чтобы отлаживать js-код в панели разработчика браузера Chrome. Для начала работы нужно установить это расширение в разделе плагинов.
Подготовка к отладке
Режим launch (запуск)
1. Запуск отладки в режиме launch без сервера
Для начала запустим отладку без использования веб-сервера. Редактируем файл конфигурации отладчика launch.json :
Конфигураций для запуска отладчика может быть несколько, выбрать нужную можно в выпадающем списке слева сверху, после чего нажать F5 для запуска отладки.
2. Запуск отладки в режиме launch с LiveServer
Теперь добавим вторую конфигурацию запуска отладки — уже с использованием веб-сервера LiveServer.
Режим attach (присоединение)
3. Запуск отладки в режиме attach без сервера
Для начала запустим отладку в режиме attach без использования веб-сервера. Для этого добавляем третью конфигурацию запуска отладчика:
Отладчик должен присоединиться к уже запущенному экземпляру Chrome и обмениваться с ним сообщениями по протоколу Chrome DevTools. При этом браузер должен быть запущен с дополнительной опцией, указывающей порт для обмена этими сообщениями. Важный момент — это должен быть единственный экземпляр Chrome, остальные должны быть закрыты.
И наконец, присоединяемся к этому экземпляру Chrome из редактора VS Code — как обычно, жмем F5 для запуска отладчика.
4. Запуск отладки в режиме attach с LiveServer
Теперь запустим отладку в режиме attach с использования сервера LiveServer. Для этого добавляем четвертую конфигурацию запуска отладчика:
Запускать браузер LiveServer должен с опцией remote-debugging-port — поэтому открываем файл настроек VS Code settings.json и добавляем еще одну настройку. Все экземпляры Chrome должны быть закрыты перед тем, как LiveServer запустит новый экземпляр.
Перед запуском отладки надо запустить веб-сервер — кнопка запуска LiveServer находится в правом нижнем углу. Теперь все готово — как обычно, жмем F5 для запуска отладчика.
Глобальные настройки отладчика
Все настройки для отдельного проекта launch.json можно перенести в файл настроек settings.json редактора VS Code — тогда они будут использоваться для всех проектов.
Профиль Chrome для отладки
Расширения Chrome, которые используются для повседневного использования и для веб-разработки часто конфликтуют. Было бы удобно иметь возможность запускать два разных экземпляра Chrome с разными профилями. Один — для повседневного использования при просмотре сайтов, другой — исключительно для веб-разработки.
Давайте создадим еще один ярлык запуска Chrome и изменим строку запуска в свойствах этого ярлыка:
Теперь запустим Chrome с использованием этого ярлыка, чтобы создать новый профиль Developer :
Путь к новому профилю можно посмотреть, если набрать в адресной строке браузера chrome://version :
Можно настроить внешний вид, чтобы он отличался от дефолтного — сразу видно, какой профиль используется:
Теперь можно установить все расширения, которые нужны для веб-разработки. А из профиля Default для повседневного использования — эти расширения удалить.
Используем новый профиль
1. Отладка в режиме launch без сервера и с профилем Developer
Опция может принимать значение true — использовать временный профиль, false — не использовать временный профиль, путь — использовать указанный путь к директории с профилями.
2. Отладка в режиме launch с LiveServer и c профилем Developer
Давайте скажем веб-серверу, чтобы он сам не запускал браузер — это будет делать отладчик:
И скажем отладчику, чтобы он запускал браузер с использованием профиля Developer :
3. Отладка в режиме attach без сервера и с профилем Developer
В этом случае нам надо самим запускать браузер с профилем Developer (ярлык для этого у нас уже есть), но еще мы должны указать дополнительную опцию remote-debugging-port — создать еще один ярлык или исправить существующий.
4. Отладка в режиме attach с LiveServer и с профилем Developer
Вместо заключения
Получилось несколько многословно, но это из-за того, что мы рассмотрели все возможные варианты запуска отладчика. В реальности запускать отладчик чаще всего удобнее в режиме attach с использованием веб-сервера. LiveServer уже запущен, все изменения сразу отражаются в окне браузера, а если потребовалась отладка — присоединяемся к уже открытому окну.
VS Code Live Server not working|Live-Server not working in Visual Studio Code port 5500
Solve Live server problem (Port:5500 Error) in VS code in 1 minutes 40 seconds.Подробнее
Visual Studio Code LIVE SERVER not working | Problem Solved 100% working 💯 with PROOFПодробнее
Change Live Server Port in VS CodeПодробнее
Fix: Server is Started at Port 5500 Live ServerПодробнее
How to Fix Live Server in Visual Studio Code + Error on Port 5500 SolvedПодробнее
VS Code Live Server Extension: Automatic browser reloadПодробнее
VS Code Live Server not working Live-Server not working in Visual Studio Code || Rashel-MahomudПодробнее
How to Run HTML in VSCode (Visual Studio Code) in Chrome on Windows 10 | Live Server | Best IDE 2021Подробнее
Solve Live server(Port:5500 Error) in VS code in 44 seconds.Подробнее
Solve Live server(Port:5500 Error) in VS code in 2 minutes 33 seconds.Подробнее
Vscode Live Server Not WorkingПодробнее
VS code live server is started at 5500 but failed to open in browser previewПодробнее
How to Download and Install Visual Studio Code on Windows 10 in 2021Подробнее
visual studio code live not working | Live server not working #vasualstudiolivenotworkingПодробнее
change live server default browser in VSCode | Live Server default browser change |2021Подробнее
Vs Code Is Not Opening Browser Directly When Live Server Get On | LIVE SERVER NOT OPENING IN BROWSERПодробнее
Русские Блоги
Простое использование W5500 и быстрый запуск официальной библиотеки ввода-вывода
Краткое введение
Некоторое время назад я бросил про модуль W5500. Через него был реализован загрузчик на основе TCP / IP. Метод на основе опроса может обеспечить стабильный и надежный вызов стека протоколов.Следующий постМодуль драйвера и пример кода были выпущены в Китае, и на основе основной функции прерываний, но еще не уверенной и стабильной, они продолжают бросать.
Этот сетевой чип реализует стек протоколов TCP / IP через аппаратное обеспечение, 10 / 100M Ethernet-канал (MAC) и физический уровень (PHY), поддерживает TCP, UDP, IPv4, ICMP, ARP, IGMP и PPPoE. Встроенный 32-байтовый буфер. MCU конфигурирует сеть и связывается с сетью через SPI, а частота SPI достигает 80 МГц.
Он предоставляет до 8 независимых сокетов (сокетов), пронумерованных от 0 до 7. Этот сокет немного отличается от того, что обычно называют сокетом. Для UDP операция после установки соответствующего UDP аналогична обычному сокету, но для TCP 1 сокет может соответствовать только одному TCP-соединению, то есть, например, если вы открываете порт, такой как 5000, прослушивающий TCP на порту, то используйте Два TCP-клиента подключаются к сети, и в результате этого может быть успешным только первое соединение TCP. Для одновременного обслуживания нескольких TCP-соединений на одном TCP-порте необходимо одновременно прослушивать этот порт на нескольких сокетах.
Еще один момент, который следует упомянуть, заключается в том, что основная идея связи с W5500 заключается в чтении и записи регистров W5500 для управления различными функциями W5500 или чтения и записи данных. Это похоже на то, как если бы мы работали с каждым модулем, устанавливая значение каждого регистра на микроконтроллере, а потому что Он не подключен напрямую к шине адреса MCU, поэтому регистр операций должен быть реализован косвенно через кадр SPI в определенном формате. Каждый раз, когда регистр считывается или записывается, начальный адрес указывается в фиксированном формате, а затем данные последовательно считываются из MISO или записываются из MOSI. В то же время некоторые другие операции также могут выполняться. Например, в режиме переменной длины данных необходимо сбросить сигнал выбора микросхемы перед каждой отправкой и затем подтолкнуть его после отправки. (Режиму переменной длины данных соответствует режим фиксированной длины данных. В этом режиме нет необходимости часто контролировать сигнал выбора микросхемы, но это очень болезненно при чтении и записи в больших количествах. В настоящее время в официальной версии библиотеки поддерживается только переменная длина данных. Режим, так что нет необходимости запутывать это дело)
Конечно, эти детали были скрыты официальной библиотекой ввода-вывода, в основном нам нужно только вызвать API, предоставляемый библиотекой.
Аппаратное соединение
Вот о том, как соединить основные линии. Здесь предполагается, что вы используете готовую плату разработки. Если вы хотите нарисовать печатную плату самостоятельно, нажмите × в правом верхнем углу. Это почти так (плата за рекламу не взимается, поэтому соответствующий логотип был удален hhh) ↓
Ну, во всяком случае, когда вы покупаете готовые платы разработки W5500, они в основном одинаковы, и на них есть всего несколько контактов.
pin | функция |
---|---|
3.3V/5V | Потребляемая мощность |
GND | Силовая земля |
INT | Контакт прерывания |
RST | Аппаратный сброс |
MISO | SPI ведущий входной ведомый вывод |
MOSI | SPI ведущий вывод подчиненного входа |
SCS/CS | SPI SLAVE выбор булавки |
SCLK/SCK | SPI тактовый вывод |
Само собой разумеется, что вход и заземление источника питания являются нормальными соединениями. Обратите внимание на разделение земли с основным чипом, в противном случае связь SPI может прерваться.
Нижние четыре являются линиями, используемыми обычной связью SPI, которые связаны согласно их собственным контактам микросхемы.
INT используется W5500 для вывода сигналов прерывания. Когда W5500 выводит прерывания, этот вывод будет переведен в низкий уровень. Кроме того, если есть несколько прерываний одновременно, механизм W5500 будет выводить прерывания одно за другим, например, два прерывания одновременно Он будет снят на короткое время, затем поднят, а через некоторое время снесен. Если вы хотите использовать механизм прерывания, подключите эту линию к выводу прерывания прерывания MCU, а затем вам нужно установить определенную настройку для внутренних регистров W5500. Если вы не используете этот вывод, вы можете проигнорировать этот вывод.
В частности, если я сам подключу MC9S12XEP100:
MISO-> S4, MOSI-> S5, SCLK-> S6, SCS-> S7 Это вывод, соответствующий SPI0
INT подключен к H0, например, этот порт имеет функцию прерывания по фронту.
Официальная библиотека IO
Адрес загрузки и структура файла:
Забудьте, как найти его на официальном сайте, дайте ссылку на github напрямую, кроме того, эта статья основана на версии 3.1.1, а последняя версия 4.0.0 недавно не тестировалась:
https://github.com/Wiznet/ioLibrary_Driver
Структура файла всего пакета официальной библиотеки выглядит следующим образом:
Мы видим, что эта библиотека на самом деле совместима с W5100, W5200, W5300 и W5500, но, поскольку я пробовал только W5500, следующее будет относиться только к W5500.
Строго говоря, вы должны открыть wizchip_conf.h и установить следующий макрос на 5500 перед его использованием, но, поскольку это опция по умолчанию, вам не нужно беспокоиться об этом.
stdint.h
Если во время компиляции вы получили ошибку, что stdint.h не включен, вы можете добавить этот заголовочный файл самостоятельно.
Ниже описаны основные функции в соответствии с этапами использования.
Функция SPI и регистрация функции критической секции
Для совместимости библиотека не может предполагать конкретную реализацию SPI и критических секций, поэтому пользователям необходимо активно регистрировать связанные функции драйвера в библиотеке для использования.
В wizchip_conf предусмотрены следующие функции для регистрации драйвера:
Примечание. Все эти функции имеют пустую функцию по умолчанию, поэтому вам не нужно напрямую регистрироваться без использования определенной функции.
Примечание. Фактически существует зарегистрированный интерфейс шины, но поскольку W5500 имеет только интерфейс SPI, эта функция будет напрямую игнорироваться.
Функция критического сечения вызывается в начале и в конце внутренней базовой функции ввода-вывода, что гарантирует атомарность единичного чтения и записи регистра W5500. Конечно, простая функция может фактически считывать и записывать несколько регистров. Если вам нужно убедиться, что Для более широкого спектра взаимоисключающих операций вы должны реализовать некоторые другие механизмы самостоятельно.
Если это единый поток для реализации всего взаимодействия с W5500, то не имеет значения, если вы не зарегистрируете эту функцию.
Функция выбора микросхемы Это функция, которая используется сразу после входа в критическую секцию и используется для уведомления о начале и конце связи W5500. Поэтому не забудьте правильно зарегистрировать эти две функции, опустите сигнал выбора микросхемы, если он выбран, и потяните вверх, если он не выбран.
Ничего не скажешь о функции чтения-записи SPI: базовый ввод-вывод или как другие библиотеки могут узнать, куда отправлять и получать данные.
Пример регистрации (в зависимости от вашей реальной ситуации):
Инициализировать и сбросить
Инициализируйте использование W5500 (socket.h)
Переписка (в wizchip_conf.h)
txsize и rxsize оба являются uint8_t [8]
Мягкий сброс использования W5500 (socket.h)
Эквивалент прямого вызова (wizchip_conf.h)
На самом деле, если вам не нужно настраивать размер буфера, просто используйте программный сброс в качестве инициализации.
Получить идентификатор чипа
Это бессмысленная особенность, но она в значительной степени упоминается.
Идентификатор зафиксирован как «W5500».
Настройка и чтение конфигурации сети
Установить и получить конфигурацию сети, параметры указателей на следующую структуру
Они эквивалентны прямому вызову (в wizchip_conf.h)
Возвращаемое значение ctlnetwork не может определить, является ли настройка успешнойПоэтому, как правило, после настройки мы читаем конфигурацию обратно, чтобы определить правильную настройку. Если они совпадают, это означает правильную настройку, в противном случае мы должны проверить, что-то не так с коммуникацией.
Следует отметить, что хотя в структуре wiz_NetInfo имеются параметры DNS и шлюза, на самом деле эти функции необходимо подключить к другим программам, иначе это не имеет смысла. Если вы хотите использовать его напрямую, используйте его в качестве статического IP-адреса. Установите честный MAC-адрес, локальный IP-адрес, маску подсети и адрес шлюза.
Тайм-аут конфигурации
Например, при инициализации соединения TCP или отправке данных, если в течение определенного периода времени ответа нет (то есть превышен период ожидания), W5500 отправит его повторно. Если по истечении количества попыток ответа не получено, будет вызвано прерывание по времени.
Если вам нужно настроить поведение тайм-аута:
Эквивалентно вызову socket.h:
Конечно, есть соответствующие методы get, то есть set для получения.
Читать сокет конечного автомата
Возвращаемое значение показано в следующей таблице.Для понимания описание прямо изменилось на функцию в библиотеке io:
состояние | описание |
---|---|
SOCK_CLOSED | Сокет закрыт и ресурсы освобождены. После вступления в силу команды отсоединения или закрытия или по истечении времени ожидания предыдущее состояние будет игнорироваться независимо от предыдущего состояния. |
SOCK_INIT | Сокет открывается в режиме TCP, прежде чем вы можете позвонить подключиться или прослушать. Перейдите в это состояние, правильно вызвав функцию сокета. |
SOCK_LISTEN | сокет работает в режиме TCP-сервера и ожидает (прослушивает) запросы на подключение |
SOCK_SYNSENT | Сокет отправил пакет запроса соединения (пакет SYN), который является промежуточным состоянием после использования команды подключения от SOCK_INIT. Если впоследствии он получает «принятое соединение» (пакет SYN / ACK), он переключится на SOCK_ESTABLISHED, в противном случае он будет Переключитесь на SOCK_CLOSED и установите флаг прерывания по таймауту |
SOCK_SYNRECV | Сокет получил «запрос на подключение» (пакет SYN). Если последующий ответ (пакет SYN / ACK) успешно отправлен, он будет преобразован в SOCK_ESTABLISHED, в противном случае он будет преобразован в SOCK_CLOSED после тайм-аута, и будет установлен флаг прерывания по тайм-ауту. |
SOCK_ESTABLISHED | Соединение с сокетом tcp установлено, то есть состояние, полученное клиентом tcp в состоянии SOCK_LISTEN, и ответ успешен, или он изменится на состояние после успешного использования команды подключения. |
SOCK_FIN_WAIT SOCK_CLOSING SOCK_TIME_WAIT | Указывает, что сокет закрывается. Это промежуточные состояния, в которых TCP-ссылки активно или пассивно закрыты. |
SOCK_CLOSE_WAIT | Указывает, что сокет закрывается. Это состояние указывает, что сокет получил «запрос на отключение» (пакет FIN) от другой стороны канала TCP. Это полузакрытое состояние и может продолжать отправлять данные. После отправки, вам нужно позвонить отключить или закрыть, чтобы полностью закрыть его. |
SOCK_LAST_ACK | Указывает, что сокет пассивно закрыт. Это состояние указывает, что сокет ожидает ответа (пакет FIN / ACK) на «запрос на отключение» (пакет FIN). Он изменится на статус SOCK_CLOSED после успешного получения ответа или по истечении времени ожидания. |
SOCK_UDP | Сокет работает в режиме UDP. Перейдите в это состояние, правильно вызвав функцию сокета. |
SOCK_IPRAW | IP raw режим. Эта статья не охватывает этот аспект. |
SOCK_MACRAW | Режим MACRAW. Эта статья не охватывает этот аспект. |
Итак, вы видите, что большинство программ выглядят так:
Это драйвер конечного автомата на основе сокетов.
Кроме того, если вы хотите использовать функции в socket.h, вышеприведенное эквивалентно:
Открытая розетка
Примечание. Настройте параметры сети перед открытием сокета.
Сокет изначально находится в состоянии SOCK_CLOSED, и в данный момент связь не может быть выполнена.
Чтобы установить связь, вам сначала нужно открыть сокет и настроить его как определенный протокол, вызвав функцию сокета в socket.h:
TCP socket
Например, настройте сокет 1 в режиме tcp и подключитесь к порту 5555:
SF_TCP_NODELAY указывает, что сокет должен ответить на пакет ACK как можно скорее после получения пакета данных от другой стороны, в противном случае для задержки требуется период ожидания.
SF_IO_NONBLOCK используется для управления поведением функций в socket.h. Если эта опция включена, вызов большинства функций в socket.h для этого сокета не будет блокировать ожидание результата вызова, но будет Вернитесь как можно скорее после подтверждения инструкции. Следует отметить, что при включении возвращаемое значение большинства функций будет SOCK_BUSY, что не означает, что вызов не удался.
UDP socket
Например, настройте сокет 2 в режиме udp и подключитесь к порту 5555:
Главное поменять договор.
SF_IO_NONBLOCK имеет тот же эффект, что и выше. Если параметр flags не нужен, просто передайте ему 0.
TCP открывает прослушивание и инициирует соединение
После успешной настройки сокета в режиме tcp вы можете открыть прослушивание, вызвав listen, то есть как tcp сервер:
После того, как сокет успешно настроен в режиме TCP, TCP-соединение инициируется вызовом connect:
Чтобы подключить сокет 1, который был инициализирован к режиму tcp, к 192.168.2.30:8080:
Отправлять и получать данные
После того, как TCP-соединение на сокете успешно установлено, можно отправить функцию отправки для отправки данных.
Например, отправьте hello world в сокет 1, который установил канал TCP:
После успешного установления TCP-соединения на сокете можно вызвать функцию recv для получения полученных данных.
Обратите внимание, что если размер буфера меньше размера буфера приема сокета, это не гарантирует, что все данные могут быть получены за один вызов. Поэтому он часто будет получать и обрабатывать в цикле, пока возвращаемое значение не станет меньше или равно 0.
После инициализации сокета в режиме udp для отправки данных используется функция sendto.
Например, отправьте данные в 192.168.2.30:3333, используя сокет 2, инициализированный для udp:
Соответственно, функцию recvfrom необходимо использовать при получении.
Для протоколов без установления соединения, таких как UDP, W5500 не извлекает IP-адрес автоматически, но напрямую отправляет весь пакет пользователю для обработки, поэтому IP-адрес отправителя фактически является программным способом получения заголовка из каждой дейтаграммы. Извлекается везде. Для достижения этой функции в библиотеке io есть биты флага для записи того, является ли текущий пакет новым пакетом. Если это так, адрес извлекается и возвращается. Это решение также напрямую приводит к тому, что каждый пакет может получить информацию об IP-адресе только при первом вызове recvfrom.
Хотя в английском комментарии библиотеки говорится, что, читая метод PACKINFO, чтобы определить, допустимы ли addr и порт, читая исходный код, кажется, что этот метод бесполезен. К счастью, если это не первый пакет, значение, указанное в addr и port, не будет изменено внутри функции. Следовательно, следующий метод может гарантировать, что IP-адрес правильный каждый раз, когда он получен.
Получить IP-адрес объекта ссылки
Под UDP recvfrom может напрямую получить IP-адрес другой стороны. Но для соединений TCP это, в основном, сервер TCP, если вам нужно знать IP-адрес объекта ссылки.
Эквивалентно вызову socket.h:
Автоматическое обнаружение пакетов сердцебиения
Для соединения TCP, если соединение случайно отключено, например, отсоединен сетевой кабель, W5500 может не знать, что фактического соединения нет, и затем думает, что оно все еще подключено, ожидает данные, а затем разрывается.
По этой причине вам необходимо добавить обнаружение сердцебиения, чтобы обеспечить нормальную связь.
Чтобы включить автоматическое обнаружение сердцебиения, после того как сокет инициализирован в режиме TCP:
Приведенный выше код эквивалентен:
Следует отметить, что пакет KeepAlive изменится на SOCK_ESTABLISHED в состоянии сокета и свяжется с другой стороной.Получил или отправил хотя бы один разПередача после общения. Поэтому рекомендуется размещать что-то сразу после установления ссылки.
Конечно, вы также можете отправлять контрольные пакеты вручную (автоматическая отправка не включена):
Отключить TCP соединение
Если вам нужно активно отключить канал TCP или чаще, вам нужно отключиться, потому что вы обнаружите, что состояние сокета SOCK_CLOSE_WAIT полузакрыто.
, затем вызовите функцию отключения:
Закрыть сокет
Чтобы закрыть сокет, вызовите функцию закрытия:
Фактически, когда вызывается сокет, функция close вызывается сначала изнутри, поэтому нет необходимости сначала вызывать close для закрытия сокета.
Прерывание
W5500 предоставляет механизм прерываний для улучшения реакции MCU в реальном времени.
Механизм прерывания используется для разработки коммуникационной программы с W5500, которая представляет собой контент высокого уровня, который здесь не раскрывается. Однако следует отметить, что если вы используете прерывания и используете официальную библиотеку ввода-вывода, вы должны избегать прерываний SENDOK и TIMEOUT. Эти два прерывания используются внутренне библиотекой ввода-вывода. Если вы удалите их самостоятельно, библиотека не будет работать должным образом.
Кроме того, общая методика для флагов прерываний состоит в том, чтобы определить, были ли получены данные и установлена ли новая связь TCP:
Обратите внимание, что хотя опрашиваемый регистр называется регистром прерывания (IR), приведенный выше также относится к программе разработки опроса.
Разное
UDP-трансляция
Это на самом деле знание TCP / IP, и это не проблема при использовании W5500. Построить целевой IP-адрес в соответствии с требованиями при трансляции
Если вы хотите вещать глобально, отправьте на 255.255.255.255
Если вы хотите вещать 192.168.2.0/24 (то есть маска 255.255.255.0), она будет отправлена на 192.168.2.255
Конкретный код не записывается, и пример кода в sendto отличается от конкретного значения IP-адреса.
UDP многоадресная рассылка
При отправке данных на адрес многоадресной рассылки нечего сказать, просто установите IP-адрес для многоадресной рассылки. Давайте поговорим о добавлении адреса многоадресной рассылки.
Чтобы присоединить адрес многоадресной рассылки, необходимо установить DIPR и DPORT на соответствующий адрес многоадресной рассылки, прежде чем открывать сокет для UDP, а затем включить многоадресную рассылку при открытии сокета.
При взаимодействии с WIN7 я обнаружил, что IGMP версии 2 необходим для успешного взаимодействия (то есть SF_IGMP_VER2 включен во флаге)
После присоединения адреса многоадресной рассылки сокет не может отправлять обычные пакеты UDP, могут отправляться только многоадресные пакеты.
Если вы хотите отправлять обычные пакеты UDP на один и тот же порт UDP, вы должны заново открыть сокет.
Пример кода:
постскриптум
В этой статье кратко описывается простое использование W5500 и общие операции официальной библиотеки ввода-вывода, основанные на ее собственных исследованиях и обучении. Возможности ограничены, и неизбежно, что есть упущения.
ссылки
[1] WIZnet Co., Ltd. W5500 Лист данных v1.3
- port 0 s m a r t status bad backup and replace как исправить
- portal fkpuzks local about life php