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.结果

相关推荐
xiancai_xianyu22 分钟前
想把数据模型一次建完美再上AI?会一直卡在建模里
开发语言·人工智能·php·数据模型·语义层·本体建模·企业知识网络
繁星蓝雨30 分钟前
C++设计原理———重载(extern “C“的由来、顺序依赖、语义依赖、overload、名称修饰符、对象操作、运算符重载、新增运算符、枚举和布尔类型)
c语言·c++·extern c·overload·重载·语义依赖·顺序依赖
(Charon)37 分钟前
【C++】网络缓冲区设计(二):Ring Buffer环形缓冲区、head/tail与跨界读写
开发语言·c++
Java后端的Ai之路1 小时前
LangChain Deep Agents 从入门到企业实战
开发语言·人工智能·python·langchain·deepagents
会飞的拖把1 小时前
Python文件操作详解:从文件读写到os、shutil模块实战
开发语言·python
RS迷途小书童1 小时前
Python 解析大疆无人机 SRT 字幕日志
开发语言·python·无人机
SuperByteMaster1 小时前
编译器将unsigned short 整体提升int和unsigned short 在内存中的分配2byte的理解
c语言
点心的游戏开发世界1 小时前
GDScript 入门笔记(十六):文件读写与数据持久化
开发语言·笔记·游戏引擎·godot
会飞的拖把2 小时前
Python序列详解:列表、元组、字符串的通用操作(超详细版)
开发语言·windows·python
reasonsummer2 小时前
【办公类-115-01】20260906育儿知识(家园小报)批量制作(2026年9月-2027年6月)
开发语言·数据库·c#