Реализованный на языке C сервер для сетевой коммуникации по протоколам TCP и UDP. Сервер TCP использует модель epoll(lt) и поддерживает одновременное подключение нескольких клиентов (максимальное количество подключений временно установлено на 8192). Он также обеспечивает обмен сообщениями между сервером и клиентами.
Этот проект может служить полным руководством для изучения и понимания программирования сокетов.
На основе этого полного кода сокета мы планируем провести техническое исследование между языками C и Go или другими языками, объединив наши знания и навыки в области технологий. В будущем мы также реализуем протокол MQTT. Все аппаратно-зависимые протоколы будут реализованы на языке C, а затем скомпилированы в библиотеку Linux SO, доступную для вызова из Go или других языков.
- Данный набор кода был протестирован, скомпилирован и запущен только на Linux. Тестирование на Windows не проводилось.
- Для тестирования вы можете использовать готовый сетевой инструмент, доступный в интернете. Например, https://wwa.lanzous.com/ik0g8gwirqj. Этот инструмент поддерживает TCP и UDP (однако UDP позволяет только отправлять сообщения, но не получать их).
Обратите внимание: поскольку многие сетевые инструменты для Windows отправляют китайские символы в кодировке ANSI (GBK), наш сервер в настоящее время может обрабатывать только кодировки GBK и UTF-8. Другие кодировки с необычными символами пока не поддерживаются.
В скриншоте представлены исходные файлы и скомпилированные файлы. Процесс компиляции будет описан позже.
// tcp-сервер по умолчанию предоставляет услуги на порту 9505. Пожалуйста, разрешите доступ к порту 9505 в брандмауэре
firewall-cmd --zone=public --add-port=9505/tcp --permanent
firewall-cmd --complete-reload
// компиляция tcpserver
gcc -o tcp_server ./tcp_server.c ./libs/functions.c ./errors.c
// запуск
./tcpserver
//компиляция tcpclient
gcc -o tcpclient ./tcp_client.c
//запуск
./tcpclient
Использование tcpserver и tcpclient для тестирования
Тестирование с помощью стороннего сетевого инструмента
// udp-сервер по умолчанию предлагает услуги на порту 9506. Пожалуйста, разрешите доступ к порту 9506 в брандмауэре. Обратите внимание, что порт брандмауэра здесь — это протокол udp, не перепутайте его, иначе вы не сможете отправлять и получать сообщения
firewall-cmd --zone=public --add-port=9506/udp --permanent
firewall-cmd --complete-reload
// компиляция udpserver
gcc -o udp_server ./udp_server.c ./libs/functions.c ./errors.c
// запуск
./udpserver
// компиляция udpclient
gcc -o udpclient ./udp_client.c
./udpclient
Использование udpserver и udpclient для тестирования
Тестирование с помощью стороннего сетевого инструмента
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )