用c++写一个套接字通信的发送程序并解释每一个语句的具体含义和作用
以下是一个用C++编写的套接字通信的发送程序,每个语句的含义和作用已经进行了注释说明:
#include <iostream>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>
int main() {
// 创建套接字
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd == -1) {
std::cout << "创建套接字失败" << std::endl;
return 1;
}
// 设置目标服务器的地址和端口
sockaddr_in serverAddr{};
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(12345);
serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
// 连接到目标服务器
if (connect(sockfd, (struct sockaddr*) &serverAddr, sizeof(serverAddr)) == -1) {
std::cout << "连接到服务器失败" << std::endl;
close(sockfd);
return 1;
}
// 要发送的数据
const char* sendData = "Hello, Server!";
// 发送数据
ssize_t numBytes = send(sockfd, sendData, strlen(sendData), 0);
if (numBytes == -1) {
std::cout << "发送数据失败" << std::endl;
close(sockfd);
return 1;
}
// 关闭套接字
close(sockfd);
return 0;
}
每个语句的具体含义和作用如下:
#include <iostream>:包含输入输出流相关的头文件。#include <sys/socket.h>:包含套接字相关的头文件。#include <arpa/inet.h>:包含地址转换相关的头文件。#include <unistd.h>:包含关闭套接字相关的头文件。#include <string.h>:包含字符串相关的头文件。int sockfd = socket(AF_INET, SOCK_STREAM, 0);:创建套接字,返回套接字文件描述符。if (sockfd == -1):检查套接字是否创建成功,如果失败则输出错误信息并返回。sockaddr_in serverAddr{};:创建一个用于存储目标服务器地址和端口的结构体。serverAddr.sin_family = AF_INET;:设置地址族为IPv4。serverAddr.sin_port = htons(12345);:设置目标服务器端口号为12345,并使用htons函数将端口号转换为网络字节序。serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1");:设置目标服务器IP地址为本地回环地址127.0.0.1,并使用inet_addr函数将IP地址转换为网络字节序。if (connect(sockfd, (struct sockaddr*) &serverAddr, sizeof(serverAddr)) == -1):连接到目标服务器,如果连接失败则输出错误信息并返回。const char* sendData = "Hello, Server!";:定义要发送的数据。ssize_t numBytes = send(sockfd, sendData, strlen(sendData), 0);:发送数据到目标服务器,返回实际发送的字节数。if (numBytes == -1):检查数据发送是否成功,如果失败则输出错误信息并返回。close(sockfd);:关闭套接字。
这个程序创建一个套接字,连接到目标服务器,然后发送一串数据到目标服务器,并最后关闭套接字
原文地址: https://www.cveoy.top/t/topic/h5fg 著作权归作者所有。请勿转载和采集!