c語(yǔ)言socket怎么讀取數(shù)據(jù)并存儲(chǔ)

小億
141
2024-03-20 19:04:51
欄目: 云計(jì)算

要讀取數(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連接。

0