在Linux系统中,sockaddr
结构体用于表示网络地址
socket()
函数创建一个套接字:#include <sys/socket.h>
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
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));
connect()
函数连接到服务器:connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr));
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);
close()
函数关闭套接字:close(sockfd);
在这个示例中,我们创建了一个IPv4套接字,连接到本地主机的8080端口,发送一条消息,然后接收并打印服务器返回的消息。注意,sockaddr_in
结构体是sockaddr
结构体的子结构体,用于表示IPv4地址。如果你需要处理IPv6地址,可以使用sockaddr_in6
结构体。