c++中tcp通信怎么使用

c++
小億
177
2024-03-02 09:54:15

在C++中進(jìn)行TCP通信,通常使用Socket編程來(lái)實(shí)現(xiàn)。以下是一個(gè)簡(jiǎn)單的示例代碼,用于建立TCP連接并發(fā)送和接收數(shù)據(jù):

#include <iostream>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>

int main() {
    // 創(chuàng)建socket
    int client_socket = socket(AF_INET, SOCK_STREAM, 0);
    
    if (client_socket < 0) {
        std::cerr << "Error creating socket" << std::endl;
        return 1;
    }
    
    // 設(shè)置服務(wù)器地址和端口
    struct sockaddr_in server_address;
    server_address.sin_family = AF_INET;
    server_address.sin_port = htons(12345);
    server_address.sin_addr.s_addr = inet_addr("127.0.0.1");
    
    // 連接到服務(wù)器
    if (connect(client_socket, (struct sockaddr *)&server_address, sizeof(server_address)) < 0) {
        std::cerr << "Error connecting to server" << std::endl;
        return 1;
    }
    
    // 發(fā)送數(shù)據(jù)
    const char *message = "Hello from client!";
    if (send(client_socket, message, strlen(message), 0) < 0) {
        std::cerr << "Error sending message" << std::endl;
        return 1;
    }
    
    // 接收數(shù)據(jù)
    char buffer[1024] = {0};
    if (recv(client_socket, buffer, 1024, 0) < 0) {
        std::cerr << "Error receiving message" << std::endl;
        return 1;
    }
    
    std::cout << "Server response: " << buffer << std::endl;
    
    // 關(guān)閉socket
    close(client_socket);
    
    return 0;
}

在這個(gè)示例中,我們首先創(chuàng)建一個(gè)客戶端socket,然后設(shè)置服務(wù)器地址和端口。接下來(lái),我們使用connect函數(shù)連接到服務(wù)器,并發(fā)送一個(gè)消息。最后,我們接收來(lái)自服務(wù)器的響應(yīng),并關(guān)閉socket。

請(qǐng)注意,這只是一個(gè)簡(jiǎn)單的示例,實(shí)際情況可能會(huì)更復(fù)雜。在實(shí)際應(yīng)用中,您可能需要處理錯(cuò)誤、超時(shí)、粘包等問(wèn)題。您還可以使用第三方庫(kù),如Boost.Asio,來(lái)簡(jiǎn)化TCP通信的實(shí)現(xiàn)。

0