码界工坊

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

推荐文章

  • Laravel项目如何在Debian上进行版本控制

    在Debian上进行Laravel项目的版本控制,通常使用Git作为版本控制系统。以下是详细步骤:1. 安装Git首先,确保你的Debian系统上已经安装了Git。如果没有安装,可以使用以下命令进行安 ...

  • 360域名是什么样的?360域名多少钱买的

    对于经常上网的人来说,相信对360域名都不陌生,那么,也有一些人不知道360域名,下面聚名资讯站为您详解一下360域名是什么样的?360域名多少钱买的。域名360.com是奇虎360公司在2015年2 ...

  • 苹果追踪用户数据,一个月内发送1.5G数据

    苹果追踪用户数据是怎么回事?据《华盛顿邮报》报道,该报记者从正在进行的一项隐私实验中发现,当允许后台应用刷新时,一些iOS应用会利用这项功能定期向追踪公司发送数据。虽然有应用使用追踪器并分享用户数据并 ...

  • Sedo榜:单词米cooking.com超40万美金成交

    今天,sedo发布了他们的每周销售榜单,有36个com域名成交,24个国家代码顶级域名成交,6个其它后缀的域名成交。其中也有不少含义不错的优质好米,我们一起来看看吧。单词米cooking.com,以4 ...

  • 如何在Linux FTP上启用SSL加密

    在Linux上为FTP启用SSL加密,您需要使用FTPSFTP Secure)或SFTPSSH File Transfer Protocol)方法1:使用FTPS首先,确保您已经安装了vsftpd。如 ...

  • 自己买个域名多少钱一个?2019最新域名价格详解

    很多新手在注册域名的时候,都不知道域名多少钱一个,其实域名在注册的时候,价格也是便宜的,下面聚名网就为您详解一下自己买个域名多少钱一个?2019最新域名价格详解?如果注册普通域名,。com域名58元一 ...

  • 域名注册信息查询,域名注册信息查询平台哪个靠谱?

    域名投资人经常需要查询域名注册信息,我们都知道在不同的域名交易平台上,域名注册信息查询的结果是不同的。有的域名注册信息查询较为全面,有的则较为片面。到底哪个域名查询平台查询域名注册信息相对准确?怎样查 ...

  • 阿里宣布新一轮组织升级:盒马成为独立事业部

    阿里宣布新一轮组织升级是怎么回事?6月18日,阿里巴巴集团CEO张勇通过全员信宣布了阿里新一轮面向未来的组织升级。盒马成为独立事业部,此次组织升级旨在既保障创新,又保障阿里数字经济体的持续繁荣。阿里巴 ...