在Linux系统中,sockaddr
结构体用于表示网络地址
- 使用
socket()
函数创建一个套接字:
#includeint sockfd = socket(AF_INET, SOCK_STREAM, 0);
- 使用
sockaddr_in
结构体定义一个IPv4地址:
#includestruct 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
结构体。