UDP客户端程序
这段C语言代码实现了一个简单的UDP客户端,它可以向特定的IP地址和端口持续发送用户输入的文本消息。
-
创建UDP套接字:
- 使用
socket(AF_INET, SOCK_DGRAM, 0)
创建一个UDP类型的套接字。如果创建失败,程序会打印错误信息并退出。
- 使用
-
设置目标地址:
- 定义了
struct sockaddr_in
类型变量dest_addr
来保存目的地址信息,包括IPv4地址族、端口号8080以及目标IP地址"192.168.50.49"。
- 定义了
-
发送数据:
- 在一个无限循环中,程序提示用户输入要发送的数据,并使用
sendto()
函数将数据发送到之前设置的目标地址。如果发送失败,程序会打印错误信息并退出。
- 在一个无限循环中,程序提示用户输入要发送的数据,并使用
-
结束与清理:
- 循环结束后,程序会调用
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;
}