Cmakelist.txt之win-c-udp-client

1.cmakelist.txt

复制代码
cmake_minimum_required(VERSION 3.16)
​
project(c_udp_client LANGUAGES C)
​
add_executable(c_udp_client main.c)
​
target_link_libraries(c_udp_client wsock32)
​
​
include(GNUInstallDirs)
install(TARGETS c_udp_client
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
​

2.测试代码

复制代码
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#include <ws2tcpip.h>
​
// #pragma comment(lib, "ws2_32.lib")
​
#define PORT 8888
#define BUFFER_SIZE 1024
​
int main() {
    WSADATA wsaData;
    int client_socket;
    struct sockaddr_in server_addr;
    char buffer[BUFFER_SIZE];
​
    // 初始化Winsock库
    if (WSAStartup(MAKEWORD(2, 2), &wsaData)!= 0) {
        perror("WSAStartup failed");
        return 1;
    }
​
    // 创建UDP套接字
    if ((client_socket = socket(AF_INET, SOCK_DGRAM, 0)) == INVALID_SOCKET) {
        perror("Socket creation failed");
        WSACleanup();
        return 1;
    }
​
    // 初始化服务器地址结构
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(PORT);
    server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
​
    while (1) {
        printf("\nEnter a message to send to the server: ");
        fgets(buffer, BUFFER_SIZE, stdin);
​
        // 发送数据到服务器
        int send_len = sendto(client_socket, buffer, strlen(buffer), 0,
                              (struct sockaddr *)&server_addr, sizeof(server_addr));
        if (send_len == SOCKET_ERROR) {
            perror("Send failed");
            WSACleanup();
            return 1;
        }
​
        // 接收服务器的响应
        int recv_len = recvfrom(client_socket, buffer, BUFFER_SIZE - 1, 0, NULL, NULL);
        if (recv_len == SOCKET_ERROR) {
            perror("Receive failed");
            WSACleanup();
            return 1;
        }
        buffer[recv_len] = '\0';
​
        printf("Server response: %s", buffer);
    }
​
​
    closesocket(client_socket);
    WSACleanup();
    return 0;
}
​
复制代码

3.结果

相关推荐
isyangli_blog2 小时前
OpenDayLight (Carbon 版本) 启动与组件安装
开发语言·php
vb2008113 小时前
FastAPI APIRouter
开发语言·python
Benszen3 小时前
KVM虚拟化解决方案
开发语言·perl
会编程的土豆3 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
東雪木3 小时前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
杨充3 小时前
1.3 浮点型数据设计灵魂
开发语言·python·算法
噜噜噜阿鲁~3 小时前
python学习笔记 | 11.3、面向对象高级编程-多重继承
java·开发语言
basketball6163 小时前
Go 语言从入门到进阶:4. 数组和MAP使用方法总结
开发语言·后端·golang
春生野草4 小时前
反射、Tomcat执行
java·开发语言
雪的季节5 小时前
企业级 Qt 全功能项目
开发语言·数据库·qt