Linux网络编程--UDP发送数据案例

UDP客户端程序

这段C语言代码实现了一个简单的UDP客户端,它可以向特定的IP地址和端口持续发送用户输入的文本消息。

  1. 创建UDP套接字

    • 使用socket(AF_INET, SOCK_DGRAM, 0)创建一个UDP类型的套接字。如果创建失败,程序会打印错误信息并退出。
  2. 设置目标地址

    • 定义了struct sockaddr_in类型变量dest_addr来保存目的地址信息,包括IPv4地址族、端口号8080以及目标IP地址"192.168.50.49"。
  3. 发送数据

    • 在一个无限循环中,程序提示用户输入要发送的数据,并使用sendto()函数将数据发送到之前设置的目标地址。如果发送失败,程序会打印错误信息并退出。
  4. 结束与清理

    • 循环结束后,程序会调用close(sockfd)来关闭套接字。
#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <stdlib.h>
int main(int argc, char const *argv[])
{

    // 创建UDP网络套接字
    int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
    if (sockfd < 0)
    {
        perror("创建udp套接字失败\n");
        exit(-1);
    }

    // 创建目的地址信息
    struct sockaddr_in dest_addr;
    memset(&dest_addr, 0, sizeof(dest_addr));
    dest_addr.sin_family = AF_INET; // 使用ipv4协议族
    dest_addr.sin_port = htons(8080);
    inet_pton(AF_INET, "192.168.50.49", &dest_addr.sin_addr.s_addr);
    socklen_t destlen = sizeof(dest_addr);

    char buf[128] = "";
    // 发送数据
    while (1)
    {
        printf("输入发送的数据\n");
        fgets(buf, sizeof(buf), stdin);
        buf[strlen(buf) - 1] = '\0';
        // ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *dest_addr, socklen_t addrlen);
        int ret = sendto(sockfd, buf, strlen(buf), 0, (struct sockaddr *)&dest_addr, destlen);
        if (ret < 0)
        {
            perror("发送数据失败\n");
            exit(-1);
        }
    }

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值