温馨提示×

Linux sockaddr如何获取

小樊
81
2025-01-01 21:16:04
栏目: 智能运维

在Linux系统中,sockaddr结构体用于表示网络地址

  1. 使用socket()函数创建一个套接字:
#include <sys/socket.h>
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
  1. 使用sockaddr_in结构体定义一个IPv4地址:
#include <netinet/in.h>
struct sockaddr_in server_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(8080);
inet_pton(AF_INET, "127.0.0.1", &(server_addr.sin_addr));
  1. 使用connect()函数连接到服务器:
connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr));
  1. 使用recv()send()函数发送和接收数据:
// 发送数据
char buffer[1024] = "Hello, Server!";
send(sockfd, buffer, strlen(buffer), 0);

// 接收数据
int recv_len = recv(sockfd, buffer, sizeof(buffer) - 1, 0);
buffer[recv_len] = '\0';
printf("Received from server: %s\n", buffer);
  1. 使用close()函数关闭套接字:
close(sockfd);

在这个示例中,我们创建了一个IPv4套接字,连接到本地主机的8080端口,发送一条消息,然后接收并打印服务器返回的消息。注意,sockaddr_in结构体是sockaddr结构体的子结构体,用于表示IPv4地址。如果你需要处理IPv6地址,可以使用sockaddr_in6结构体。

0