linux 下基于TCP协议的客户端/服务端网络通信——详细步骤

本文是基于C语言技术网大佬的学习总结,主要对linux 下基于TCP协议的客户端/服务端网络通信的步骤进行介绍。

1.安装系统

首先在虚拟机中安装两个linux系统,我使用了VMware Workstation 15 Player虚拟机,并在虚拟机中安装了两个CentOS 7 64 位系统,一个作为服务端起名server,另一个作为客户端起名client。
在这里插入图片描述

2.下载gcc

因为我们进行的网络通信程序基于C++语言,故需要安装gcc-c++。在服务端和客户端中打开终端,使用以下命令安装gcc-c++。本命令需要root权限,请首先使用su命令获取root权限。

// 安装gcc-c++
yum -y install gcc-c++

3.建立server.cpp和client.cpp的可执行文件

我们在服务端的桌面上建一个server文件,在客户端的桌面上建一个client文件。我们需要给予这两个文件修改权限,使用chmod命令赋予权限

// 赋予server文件最高权限
chmod 777 server

然后使用vi指令在服务端终端上server文件内新建一个server.cpp文本,在客户端终端上client文件内新建一个client.cpp文本。

// vi指令新建server.cpp文本
vi server.cpp

使用键盘上的指令,然后输入wq,即可保存文本退出。
服务端中复制大佬链接中的server.cpp,客户端中复制client.cpp,然后保存。
随后,使用gcc命令把server.cpp和client.cpp生成可执行文件

// 把server.cpp生成为server可执行文件
gcc -g -o server server.cpp

最后结果如图
在这里插入图片描述

4.防火墙设置

网络通信需要进行防火墙设置,以便使用通信端口可以进行通信。
首先,我们希望使用5000端口进行通信,则需要在服务端开通5000端口服务

// 开放5000端口
firewall-cmd --zone=public --add-port=5000/tcp --permanent

然后重新加载防火墙

// 重新加载防火墙
firewall-cmd --reload

此时,服务端端口5000服务已经建立

5.开始网络通信

首先使用ifconfig命令获取服务端ip地址

// 获取网络信息
ifconfig

在这里插入图片描述
然后在服务端的server文件下让服务端开启服务

// 开启服务端服务
./server 5000

在这里插入图片描述

随后在客户端的client文件下发起通信请求,使用下述指令(IP地址换成你自己的

// 客户端通信请求
./client 192.168.174.134 5000

最后信息发送成功
在这里插入图片描述
到此为止就大功告成了。最后再一次地感谢大佬的帮助,更详细的介绍请观摩大佬链接

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
以下是使用QT编写一个基于tcp/ip协议通信的服务端客户端的步骤: 1. 创建一个QT项目,并添加QT网络库 2. 创建一个服务端 ```c++ QTcpServer *server = new QTcpServer(this); connect(server, SIGNAL(newConnection()), this, SLOT(newConnection())); if(!server->listen(QHostAddress::Any, 1234)) { qDebug() << "Server could not start!"; } else { qDebug() << "Server started!"; } void Server::newConnection() { QTcpSocket *socket = server->nextPendingConnection(); sockets.append(socket); qDebug() << "Client connected!"; } ``` 3. 创建一个客户端 ```c++ QTcpSocket *socket = new QTcpSocket(this); connect(socket, SIGNAL(connected()), this, SLOT(connected())); connect(socket, SIGNAL(disconnected()), this, SLOT(disconnected())); connect(socket, SIGNAL(readyRead()), this, SLOT(readyRead())); socket->connectToHost("127.0.0.1", 1234); if(!socket->waitForConnected(5000)) { qDebug() << "Error: " << socket->errorString(); } else { qDebug() << "Connected!"; } void Client::connected() { qDebug() << "Connected to server!"; } void Client::disconnected() { qDebug() << "Disconnected from server!"; } void Client::readyRead() { QByteArray data = socket->readAll(); qDebug() << "Received: " << data; } ``` 4. 在服务端中处理接收到的数据 ```c++ void Server::newConnection() { QTcpSocket *socket = server->nextPendingConnection(); sockets.append(socket); connect(socket, SIGNAL(readyRead()), this, SLOT(readyRead())); qDebug() << "Client connected!"; } void Server::readyRead() { QTcpSocket *socket = qobject_cast<QTcpSocket *>(sender()); if(socket) { QByteArray data = socket->readAll(); qDebug() << "Received: " << data; foreach(QTcpSocket *s, sockets) { s->write(data); } } } ``` 5. 在客户端中发送数据 ```c++ socket->write("Hello, server!"); ``` 这样就完成了基于tcp/ip协议通信的服务端客户端的编写。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值