阅读量:36
在Ubuntu下使用C++进行网络编程,你可以使用套接字(socket)API
- 安装必要的库:
在Ubuntu系统中,你需要安装libsocket库。打开终端并运行以下命令:
sudo apt-get update
sudo apt-get install libsocket-dev
- 创建一个C++文件:
创建一个新的C++文件,例如network_program.cpp。
- 编写代码:
在network_program.cpp文件中,编写以下示例代码:
#include
#include
#include
#include
#include
#include
int main() {
int server_fd, new_socket;
struct sockaddr_in address;
int opt = 1;
int addrlen = sizeof(address);
char buffer[1024] = {0};
const char* hello = "Hello from server";
// 创建套接字文件描述符
if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
perror("socket failed");
exit(EXIT_FAILURE);
}
// 设置套接字选项
if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) {
perror("setsockopt");
exit(EXIT_FAILURE);
}
// 定义服务器地址结构
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons(8080);
// 绑定套接字到服务器地址
if (bind(server_fd, (struct sockaddr*)&address, sizeof(address)) < 0) {
perror("bind failed");
exit(EXIT_FAILURE);
}
// 监听连接
if (listen(server_fd, 3) < 0) {
perror("listen");
exit(EXIT_FAILURE);
}
// 接受客户端连接
if ((new_socket = accept(server_fd, (struct sockaddr*)&address, (socklen_t*)&addrlen)) < 0) {
perror("accept");
exit(EXIT_FAILURE);
}
// 读取客户端发送的数据
read(new_socket, buffer, 1024);
std::cout << "Message from client: " << buffer class="hljs-comment">// 向客户端发送数据
send(new_socket, hello, strlen(hello), 0);
std::cout << "Hello message sent" << std class="hljs-comment">// 关闭套接字
close(new_socket);
close(server_fd);
return 0;
}
- 编译代码:
在终端中,使用g++编译器编译你的C++代码:
g++ network_program.cpp -o network_program
- 运行程序:
在终端中,运行编译后的程序:
./network_program
现在,你的程序正在监听8080端口。你可以使用telnet或其他网络工具连接到此端口以测试你的服务器。
注意:这个示例仅用于演示目的,实际应用中可能需要更多的错误处理和功能。