在Linux中,sendto()函數(shù)用于向指定的目標(biāo)地址發(fā)送數(shù)據(jù)。其函數(shù)原型如下:
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
const struct sockaddr *dest_addr, socklen_t addrlen);
參數(shù)說明如下:
sockfd
:指定發(fā)送數(shù)據(jù)的套接字文件描述符。buf
:指向包含要發(fā)送數(shù)據(jù)的緩沖區(qū)的指針。len
:要發(fā)送的數(shù)據(jù)的長度。flags
:用于指定發(fā)送的行為,通??梢栽O(shè)置為0。dest_addr
:指向目標(biāo)地址的結(jié)構(gòu)體指針,通常是struct sockaddr
類型。addrlen
:目標(biāo)地址結(jié)構(gòu)體的長度。示例代碼:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <string.h>
int main() {
int sockfd;
struct sockaddr_in dest_addr;
char *msg = "Hello, World!";
// 創(chuàng)建套接字
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
// 設(shè)置目標(biāo)地址
dest_addr.sin_family = AF_INET;
dest_addr.sin_port = htons(12345); // 目標(biāo)端口號
dest_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); // 目標(biāo)IP地址
// 發(fā)送數(shù)據(jù)
sendto(sockfd, msg, strlen(msg), 0, (struct sockaddr *)&dest_addr, sizeof(dest_addr));
// 關(guān)閉套接字
close(sockfd);
return 0;
}
在以上示例中,首先創(chuàng)建一個UDP套接字,然后設(shè)置目標(biāo)IP地址和端口號,最后發(fā)送數(shù)據(jù)。發(fā)送成功后關(guān)閉套接字。