在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
結構體。