Test UDP port

* UdpTest.cpp

cpp 复制代码
/* 
* On client:
* gcc udp_test_windows.c -o udp_test_windows -lws2_32
* ./udp_tset_windows x.x.x.x 4665 # Replace x.x.x.x with your server IP address
* On server:
* sudo tcpdump -i any udp port 4665 -nn -XX
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winsock2.h>
#include <ws2tcpip.h>

#pragma comment(lib, "Ws2_32.lib")

int sendUdp(const char *ip, unsigned short port, const char *message) {
    WSADATA wsaData;
    SOCKET sockfd;
    struct sockaddr_in servaddr;
    int ret_code;

    /* Initialize Winsock */
    if ((ret_code = WSAStartup(MAKEWORD(2, 2), &wsaData)) != 0) {
        fprintf(stderr, "WSAStartup failed with error: %d\n", WSAGetLastError());
        return ret_code;
    }

    /* Create socket */
    if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == INVALID_SOCKET) {
        ret_code = WSAGetLastError();
        fprintf(stderr, "Socket creation failed with error: %d\n", ret_code);
        WSACleanup();
        return ret_code;
    }
    memset(&servaddr, 0, sizeof(servaddr));
    /* Set server address and port */
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(port);
    if (inet_pton(AF_INET, ip, &servaddr.sin_addr) <= 0) {
        fprintf(stderr, "Invalid address/ Address not supported\n");
        closesocket(sockfd);
        WSACleanup();
        return 2;  /* Custom error code for invalid address */
    }
    /* Send message to server */
    int n = sendto(sockfd, message, strlen(message), 0, (struct sockaddr*)&servaddr, sizeof(servaddr));
    if (n == SOCKET_ERROR) {
        ret_code = WSAGetLastError();
        fprintf(stderr, "Send failed with error: %d\n", ret_code);
        closesocket(sockfd);
        WSACleanup();
        return ret_code;
    }
    closesocket(sockfd);
    WSACleanup();
    return 0;
}

int main(int argc, char* argv[]) 
{
    /* E:\Projects\VS_Projects\UdpTest\Debug\UdpTest.exe x.x.x.x 4665 */
    if (argc != 3) {
        fprintf(stderr, "Usage: %s <IP> <port>\n", argv[0]);
        return 1;
    }

    const char* ip = argv[1];
    unsigned short port = atoi(argv[2]);
    const char* message = "Hello, aMule!";
    sendUdp(ip, port, message);
    printf("Message sent to %s:%d\n", ip, port);

    return 0;
}

Add port 4665/udp to the firewall configuration:

bash 复制代码
default_zone=$(firewall-cmd --get-default-zone)
firewall-cmd --permanent --zone=${default_zone} --add-port=4665/udp
firewall-cmd --reload
firewall-cmd --state
firewall-cmd --list-all --zone=${default_zone}

Test output:

相关推荐
制冷技术咨询与服务2 分钟前
某纯电牵引车整车CAN网络
网络·汽车·can·某纯电牵引车整车can网络
zhengqweasd5 分钟前
Linux网络(一):服务器数据包从网卡到应用程序,完整收包流程详解
linux·服务器·网络
小白羊丨18 分钟前
HTTP/2 如何缓解 HTTP/1.1 阻塞;长连接对 Nginx 有什么影响?
网络协议·nginx·http
脚踏实地,坚持不懈!20 分钟前
Linux 6.18.7 内存分配与回收 —— 代码梳理
linux·运维·网络
云边云科技_云网融合2 小时前
零售餐饮门店网络搭建:POS 交易稳定保障、IoT 设备联网运维、门店带宽优化、多终端并发适配
网络·物联网·零售
luj_17683 小时前
一线一区一变破解人盯人防守密码
开发语言·网络·c++·经验分享·算法
我的小卷呀4 小时前
Linux ip 命令底层逻辑与实战指南
linux·运维·c语言·网络协议·tcp/ip·网络安全
luj_17684 小时前
中锋卡位与开放线博弈
c语言·开发语言·网络·经验分享·算法
数据知道4 小时前
AES 加密实战——模式选择(ECB/CBC/GCM)与安全陷阱
前端·网络·安全
扬扬的三格电力笔记4 小时前
编码器信号远距离传输总出错?聊聊 HTL/TTL 转光纤模块,解决编码器干扰与距离难题
网络·嵌入式硬件