码界工坊

htykm.cn
人生若只如初见

Ubuntu C++网络编程怎样入门

在Ubuntu上进行C++网络编程,你可以遵循以下步骤:

1. 安装必要的开发工具和库

首先,确保你的系统是最新的,并安装必要的开发工具和库。打开终端并输入以下命令:

sudo apt-get updatesudo apt-get install build-essential cmake

2. 创建项目文件夹

创建一个新的项目文件夹来存放你的源代码和构建文件:

mkdir cpp_networking_projectcd cpp_networking_project

3. 编写服务器和客户端代码

在项目文件夹中创建两个源代码文件:server.cppclient.cpp

server.cpp:

#include #include #include #include #include const int PORT = 8080;const int BUFFER_SIZE = 1024;int main() {     int server_fd, new_socket;    struct sockaddr_in address;    int addrlen = sizeof(address);    char buffer[BUFFER_SIZE] = { 0};    const char *message = "Hello from server!";    // 创建套接字    if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {         std::cerr << "Socket creation failed" << std::endl;        return -1;    }    // 绑定套接字到端口8080    address.sin_family = AF_INET;    address.sin_addr.s_addr = INADDR_ANY;    address.sin_port = htons(PORT);    if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) {         std::cerr << "Bind failed" << std::endl;        return -1;    }    // 监听端口    if (listen(server_fd, 3) < 0) {         std::cerr << "Listen failed" << std::endl;        return -1;    }    // 接受客户端连接    if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t *)&addrlen)) < 0) {         std::cerr << "Accept failed" << std::endl;        return -1;    }    // 读取客户端发送的数据    read(new_socket, buffer, BUFFER_SIZE);    std::cout << "Message from client: " << buffer << std::endl;    // 发送数据给客户端    send(new_socket, message, strlen(message), 0);    std::cout << "Hello message sent" << std::endl;    // 关闭套接字    close(new_socket);    close(server_fd);    return 0;}

client.cpp:

#include #include #include #include #include #include const std::string SERVER_IP = "127.0.0.1";const int PORT = 8080;const int BUFFER_SIZE = 1024;int main() {     int sock = 0;    struct sockaddr_in serv_addr;    char buffer[BUFFER_SIZE] = { 0};    const char *message = "Hello from client!";    // 创建套接字    if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {         std::cerr << "Socket creation failed" << std::endl;        return -1;    }    serv_addr.sin_family = AF_INET;    serv_addr.sin_port = htons(PORT);    // 将IP地址转换为二进制格式    if (inet_pton(AF_INET, SERVER_IP.c_str(), &serv_addr.sin_addr) <= 0) {         std::cerr << "Invalid address / Address not supported" << std::endl;        return -1;    }    // 连接到服务器    if (connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {         std::cerr << "Connection failed" << std::endl;        return -1;    }    // 向服务器发送消息    send(sock, message, strlen(message), 0);    // 从服务器接收消息    read(sock, buffer, BUFFER_SIZE);    std::cout << "Message from server: " << buffer << std::endl;    // 关闭套接字    close(sock);    return 0;}

4. 配置CMakeLists.txt

在项目文件夹中创建一个名为 CMakeLists.txt的文件,用于配置项目:

cmake_minimum_required(VERSION 3.10)project(cpp_networking_project)set(CMAKE_CXX_STANDARD 14)add_executable(server server.cpp)add_executable(client client.cpp)

5. 编译和运行项目

在项目文件夹中,运行以下命令来编译和运行项目:

mkdir buildcd buildcmake ..make./server & ./client

6. 学习资源推荐

  • C网络编程全面指南

通过以上步骤,你应该能够在Ubuntu上使用C++进行基本的网络编程。你可以根据自己的需求修改代码,实现更复杂的功能。

未经允许不得转载 » 本文链接:http://htykm.cn/html/503f7399423.html

推荐文章

  • CentOS Java运行慢怎么优化

    在CentOS系统中,Java应用程序的性能优化是一个涉及多个层面的复杂任务。以下是一些常用的优化方法:JVM调优内存管理:通过调整堆内存大小-Xmx和-Xms)、非堆内存、垃圾回收器等参数来优化内存 ...

  • Ubuntu FTPServer支持远程连接吗

    是的,Ubuntu可以支持FTPServer的远程连接,以下是相关介绍:Ubuntu远程连接方法SSH连接:Ubuntu默认安装了SSH客户端,可以通过SSH协议进行远程连接。VNC连接:可以通过在U ...

  • debian软连接使用教程是什么

    在 Debian 中,软链接也称为符号链接)是一种特殊的文件类型,它是一个指向另一个文件或目录的引用。创建和使用软链接的基本步骤如下:创建软链接ln -s target link_nametarget ...

  • debian驱动更新步骤

    在 Debian 系统中更新驱动程序通常涉及以下步骤:1. 更新系统首先,确保你的系统已经更新到最新版本:sudo apt update && sudo apt upgrade -y2. 禁用 Nou ...

  • CentOS如何配置防火墙规则

    在CentOS系统中,配置防火墙规则通常使用firewalld服务。以下是一些基本的步骤和示例,帮助你配置防火墙规则:1. 安装firewalld如果你的CentOS系统还没有安装firewalld, ...

  • CentOS消息通知机制如何设置

    在CentOS系统中,设置消息通知机制可以通过多种方式实现,以下是一些常见的方法:1. 使用 wall命令wall命令可以向所有登录用户发送消息。wall "这是一个系统通知"2. 使用 notify ...

  • ubuntu如何备份copidar命令配置文件

    在Ubuntu系统中,如果你想要备份copidar命令的配置文件,你可以按照以下步骤进行:找到配置文件的位置:copidar的配置文件通常位于用户的家目录下的.copidar文件夹中,文件名为conf ...

  • centos ftpserver如何限制访问

    在CentOS上限制FTP服务器访问可以通过多种方法实现,包括使用防火墙规则、配置FTP服务器软件如vsftpd)以及使用SELinux策略。以下是一些常见的方法:方法一:使用防火墙规则iptable ...