在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)。