当然可以!以下是一个简单的使用 send
函数进行 TCP socket 通信的 C++ 代码示例。这个例子展示了如何创建一个 socket,连接到服务器,并发送数据。
示例代码
#include <iostream>
#include <cstring> // For memset
#include <unistd.h> // For close
#include <sys/socket.h> // For socket, connect, send
#include <netinet/in.h> // For sockaddr_in
#include <arpa/inet.h> // For inet_pton
int main() {
int sockfd;
struct sockaddr_in serverAddr;
// 创建 socket
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) {
std::cerr << "Error creating socket" << std::endl;
return -1;
}
// 配置服务器地址结构
memset(&serverAddr, 0, sizeof(serverAddr)); // 清零结构体
serverAddr.sin_family = AF_INET; // IPv4
serverAddr.sin_port = htons(8080); // 设置端口号 (8080)
// 将 IP 地址从文本格式转换为网络格式
if (inet_pton(AF_INET, "127.0.0.1", &serverAddr.sin_addr) <= 0) {
std::cerr << "Invalid address or Address not supported" << std::endl;
return -1;
}
// 连接到服务器
if (connect(sockfd, (struct sockaddr *)&serverAddr, sizeof(serverAddr)) < 0) {
std::cerr << "Connection failed" << std::endl;
return -1;
}
const char *message = "Hello from client!";
// 使用 send 函数发送数据
ssize_t bytesSent = send(sockfd, message, strlen(message), 0);
if (bytesSent < 0) {
std::cerr << "Error sending message" << std::endl;
close(sockfd);
return -1;
}
std::cout << "Sent " << bytesSent << " bytes: " << message << std::endl;
//关闭socket
close(sockfd);
return 0;
}
编译和运行
确保在本地有一个 TCP 服务器在监听 127.0.0.1:8080
。然后,你可以使用 g++ 编译并运行这个程序:
g++ -o tcp_client tcp_client.cpp
./tcp_client
注意事项
- 确保你的服务器已经启动并监听相应的端口(本例中为
8080
)。 - 此示例使用的是 IPv4 和 TCP 协议。
- 在实际应用中,错误处理应该更加完善,以便于调试和维护。
内容由零声教学AI助手提供,问题来源于学员提问