共 1 篇文章

标签:Linux下socket编程sendto命令详解 (linux socket sendto)

Linux下socket编程sendto命令详解 (linux socket sendto)

Linux下Socket编程sendto命令详解 在Linux下进行Socket编程需要掌握sendto函数的使用方法。sendto函数可以从一个已经打开的socket发送数据到指定的目的地址,可以是本地地址,也可以是远程地址。本文将详细介绍如何使用sendto函数。 sendto函数的基本用法 sendto函数的原型如下: “` ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen); “` 其中各个参数的意义如下: – sockfd:已经打开的socket的描述符。 – buf:需要发送的数据。 – len:需要发送的数据的长度。 – flags:发送数据的标志。常见的标志有MSG_DONTWT和MSG_NOSIGNAL等。 – dest_addr:目的地址。可以是本地地址,也可以是远程地址。 – addrlen:目的地址的长度。 sendto函数的返回值为成功发送的字节数,发送失败返回-1,错误信息存储在errno中。 使用sendto函数发送数据 下面是一个简单的例子,演示如何使用sendto函数发送数据。该程序创建一个UDP socket,然后向指定的IP地址和端口发送一条信息。 “`c #include #include #include #include #include #include #define IP_ADDR “localhost” #define PORT 8080 #define BUF_SIZE 4096 int mn() { int sockfd, ret; char buf[BUF_SIZE]; struct sockaddr_in addr; sockfd = socket(AF_INET, SOCK_DGRAM, 0); if (sockfd == -1) { printf(“Create socket fled: %s\n”, strerror(errno)); exit(EXIT_FLURE); } printf(“Create socket success.\n”); memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; inet_pton(AF_INET, IP_ADDR, &addr.sin_addr.s_addr); addr.sin_port = htons(PORT); strcpy(buf, “Hello, Socket”); ret = sendto(sockfd, buf, strlen(buf), 0, (struct sockaddr *)&addr, sizeof(addr)); if (ret == -1) { printf(“Send message fled: %s\n”,...

技术分享