要讀取數(shù)據(jù)并存儲(chǔ)數(shù)據(jù),首先需要?jiǎng)?chuàng)建一個(gè)socket來建立連接,并設(shè)置socket的選項(xiàng)。然后使用read()函數(shù)來讀取數(shù)據(jù),最后將讀取的數(shù)據(jù)存儲(chǔ)到一個(gè)緩沖區(qū)中。
以下是一個(gè)簡(jiǎn)單的示例代碼,演示了如何在C語(yǔ)言中讀取數(shù)據(jù)并存儲(chǔ)數(shù)據(jù):
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main() {
int sockfd;
char buffer[1024];
struct sockaddr_in server_addr;
// 創(chuàng)建socket
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) {
perror("Error creating socket");
return 1;
}
// 設(shè)置服務(wù)器地址和端口
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(8080);
server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
// 建立連接
if (connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
perror("Error connecting to server");
return 1;
}
// 讀取數(shù)據(jù)并存儲(chǔ)
int bytes_read = read(sockfd, buffer, sizeof(buffer));
if (bytes_read < 0) {
perror("Error reading data");
return 1;
}
// 打印讀取的數(shù)據(jù)
printf("Data read from server: %s\n", buffer);
// 關(guān)閉socket連接
close(sockfd);
return 0;
}
在這個(gè)示例中,首先創(chuàng)建了一個(gè)socket并連接到指定的服務(wù)器地址和端口。然后使用read()函數(shù)讀取數(shù)據(jù),并將讀取的數(shù)據(jù)存儲(chǔ)到buffer中。最后打印出從服務(wù)器讀取的數(shù)據(jù),并關(guān)閉socket連接。