【C++实现UDP客户端】

Question

C++实现UDP客户端

Answer

下面是一个简单的C++ UDP客户端示例代码,它使用了POSIX网络编程接口。这个客户端可以发送消息到指定的UDP服务器,并接收来自服务器的响应。

请确保你的开发环境支持C++和POSIX标准库。

cpp 复制代码
#include <iostream>
#include <cstring>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>

int main() {
    // 创建UDP套接字
    int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
    if (sockfd < 0) {
        std::cerr << "创建套接字失败" << std::endl;
        return -1;
    }

    // 服务器地址结构
    struct sockaddr_in servaddr;
    std::memset(&servaddr, 0, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(8080); // 服务器端口
    servaddr.sin_addr.s_addr = inet_addr("127.0.0.1"); // 服务器IP

    // 准备发送的数据
    const char *msg = "Hello, UDP Server!";
    sendto(sockfd, msg, std::strlen(msg), 0, (struct sockaddr*)&servaddr, sizeof(servaddr));

    // 接收服务器的响应
    char buffer[1024];
    socklen_t len = sizeof(servaddr);
    ssize_t n = recvfrom(sockfd, buffer, sizeof(buffer) - 1, 0, (struct sockaddr*)&servaddr, &len);
    if (n < 0) {
        std::cerr << "接收数据失败" << std::endl;
    } else {
        buffer[n] = '\0'; // 确保字符串以NULL结尾
        std::cout << "接收到来自服务器的响应: " << buffer << std::endl;
    }

    // 关闭套接字
    close(sockfd);
    return 0;
}

编译和运行

  1. 将上述代码保存为udp_client.cpp

  2. 使用以下命令编译代码(在Linux系统上):

    bash 复制代码
    g++ udp_client.cpp -o udp_client
  3. 运行客户端程序:

    bash 复制代码
    ./udp_client

注意事项

  • 你需要确保在同一台机器上运行一个UDP服务器,或者修改servaddr.sin_addr.s_addr为其他可达的服务器IP。
  • 服务器端口需要和客户端发送请求时指定的端口一致。
  • 如果需要处理并发请求,可以考虑多线程编程或使用异步I/O。
相关推荐
程序定小飞8 小时前
基于springboot的汽车资讯网站开发与实现
java·开发语言·spring boot·后端·spring
大米粥哥哥9 小时前
Qt 使用QAMQP连接RabbitMQ
开发语言·qt·rabbitmq·qamqp
yivifu9 小时前
精益求精,支持处理嵌套表格的Word表格转HTML表格
开发语言·c#·word
沐知全栈开发9 小时前
PHP MySQL WHERE 子句详解
开发语言
糖纸风筝9 小时前
Java指南:eclipse、java-activemq与测试验证
java·开发语言·学习
小坏讲微服务9 小时前
整合Spring Cloud Alibaba与Gateway实现跨域的解决方案
java·开发语言·后端·spring cloud·云原生·gateway
玖剹9 小时前
穷举 VS 暴搜 VS 深搜 VS 回溯 VS 剪枝
c语言·c++·算法·深度优先·剪枝·深度优先遍历
码上成长9 小时前
<script setup> 实战模式:大型组件怎么拆?
开发语言·javascript·vue.js
yolo_guo10 小时前
opencv 学习: QA_02 什么是图像中的高频成分和低频成分
linux·c++·opencv·计算机视觉
九河_10 小时前
解决pip install gym==0.19.0安装失败问题
开发语言·python·pip·gym