Socket之TCP-IP
- 通常的TCP/IP流程如下:
TCP/IP的通讯更像是打电话,连接上通了确认是自己拨叫的用户之后才能进行正常通话,更加安全合理。
- Qt中的TCP/IP流程如下:
Qt中流程和普通的思路一样,只是封装成了自己的函数,使用更加方便
- 实现的效果如下
- 参考代码如下:
服务器.h文件:
#ifndef WIDGET_H
#define WIDGET_H #include <QWidget>
#include <QTcpServer>
#include <QTcpSocket>
#include <QString>
namespace Ui {
class Widget;
} class Widget : public QWidget
{
Q_OBJECT public:
explicit Widget(QWidget *parent = );
~Widget(); private slots:
void on_send_clicked();
void communication();
void on_disconnect_clicked();
void showtext();
private:
Ui::Widget *ui;
QTcpServer *TcpServer;
QTcpSocket *TcpSocket;
}; #endif // WIDGET_H
服务器.cpp文件:
#include "widget.h"
#include "ui_widget.h" Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
TcpServer = new QTcpServer(this);
TcpSocket = NULL;
setWindowTitle("服务器:6666");
TcpServer->listen(QHostAddress::Any,);
connect(TcpServer,&QTcpServer::newConnection,this,&Widget::communication); }
void Widget::communication()
{
TcpSocket=TcpServer->nextPendingConnection();
QString ip = TcpSocket->peerAddress().toString();
ui->textEdit->setText(ip);
connect(TcpSocket,&QTcpSocket::readyRead,this,&Widget::showtext); }
void Widget::showtext()
{
QByteArray array = TcpSocket->readAll();
ui->textEdit->append(array);
}
Widget::~Widget()
{
delete ui;
} void Widget::on_send_clicked()
{
if(TcpSocket == NULL)
{
return;
}
QString text = ui->textEdit_2->toPlainText();
TcpSocket->write(text.toUtf8().data()); } void Widget::on_disconnect_clicked()
{
if(TcpSocket == NULL)
{
return;
}
TcpSocket->disconnectFromHost();
TcpSocket->close();
TcpSocket = NULL; }
客户端.h文件:
#ifndef SOCKETWIDGET_H
#define SOCKETWIDGET_H #include <QWidget>
#include <QTcpSocket>
#include <Qstring>
#include <QHostAddress>
namespace Ui {
class SocketWidget;
} class SocketWidget : public QWidget
{
Q_OBJECT public:
explicit SocketWidget(QWidget *parent = );
~SocketWidget();
public slots:
void dealdata();
void dealread();
private slots:
void on_send_clicked(); void on_disconnect_clicked(); void on_connect_clicked(); private:
Ui::SocketWidget *ui;
QTcpSocket *TcpSocket;
}; #endif // SOCKETWIDGET_H
客户端.cpp文件:
#include "socketwidget.h"
#include "ui_socketwidget.h" SocketWidget::SocketWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::SocketWidget)
{
ui->setupUi(this);
TcpSocket = new QTcpSocket(this);
setWindowTitle("客户端");
connect(TcpSocket,&QTcpSocket::connected,this,&SocketWidget::dealdata);
connect(TcpSocket,&QTcpSocket::readyRead,this,&SocketWidget::dealread);
}
void SocketWidget::dealdata()
{
QString str= "已连接服务器";
ui->read->setText(str);
}
SocketWidget::~SocketWidget()
{
delete ui;
}
void SocketWidget::dealread()
{
QByteArray array = TcpSocket->readAll();
ui->read->append(array);
}
void SocketWidget::on_send_clicked()
{
QString sendtext = ui->write->toPlainText();
TcpSocket->write(sendtext.toUtf8().data());
//发送数据
} void SocketWidget::on_disconnect_clicked()
{
TcpSocket->disconnectFromHost();
TcpSocket->close();
} void SocketWidget::on_connect_clicked()
{
quint16 port = ui->port->toPlainText().toInt();
QString ip = ui->ip->toPlainText();
TcpSocket->connectToHost(QHostAddress(ip),port);
//建立主动连接
}
Socket之TCP-IP的更多相关文章
- 网络层、传输层、应用层、端口通信协议编程接口 - http,socket,tcp/ip 网络传输与通讯知识总结
引: http://coach.iteye.com/blog/2024511 什么是TCP和UDP,以及二者区别是什么? TCP的全称为传输控制协议.这种协议可以提供面向连接的.可靠的.点到点的通信. ...
- 网络通信 --> Socket、TCP/IP、HTTP、FTP及网络编程
Socket.TCP/IP.HTTP.FTP及网络编程 聊聊Socket.TCP/IP.HTTP.FTP及网络编程
- 聊聊Socket、TCP/IP、HTTP、FTP及网络编程
1 这些都是什么 既然是网络传输,涉及几个系统之间的交互,那么首先要考虑的是如何准确的定位到网络上的一台或几台主机,另一个是如何进行可靠高效的数据传输.这里就要使用到TCP/IP协议. 1.1 TCP ...
- socket跟TCP/IP 的关系,单台服务器上的并发TCP连接数可以有多少
常识一:文件句柄限制 在Linux下编写网络服务器程序的朋友肯定都知道每一个tcp连接都要占一个文件描述符,一旦这个文件描述符使用完了,新的连接到来返回给我们的错误是"Socket/File ...
- 关于Socket、TCP/IP、HTTP、FTP及网络编程
来源:陶邦仁 链接:http://blog.jobbole.com/99694/ 既然是网络传输,涉及几个系统之间的交互,那么首先要考虑的是如何准确的定位到网络上的一台或几台主机,再者如何进行可靠高效 ...
- SOCKET 编程TCP/IP、UDP
TCP/IP 资源:http://download.csdn.net/detail/mao0514/9061265 server: #include<stdio.h> #include&l ...
- Python之路(第三十篇) 网络编程:socket、tcp/ip协议
一.客户端/服务器架构 1.硬件C/S架构(打印机) 打印机作为一个服务端,电脑连接打印机进行打印 2.软件C/S架构 互联网中处处是C/S架构 如谷歌网站是服务端,你的浏览器是客户端(B/S架构也是 ...
- SOCKET,TCP/IP,UDP,HTTP,FTP总结
一.TCP/UDP,SOCKET,HTTP,FTP简析 TCP/IP是个协议组(主要解决数据如何在网络中传输),可分为三个层次:网络层.传输层和应用层: 网络层:IP协议.ICMP协议.ARP协议 ...
- socket、tcp/ip协议、udp协议
socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. socket起源于Un ...
- socket http tcp ip 区别联系
功能是实现继承复用.刚才做了一个简要的概述,里面有一些常用的概念,这里做个简短的概念普及介绍:(1),TCP/IP------TPC/IP协议是传输层协议,主要解决数据如何在网络中传输.(2),Soc ...
随机推荐
- 使用Java, AppleScript对晓黑板进行自动打卡
使用Java, AppleScript对晓黑板进行自动打卡 由于我们学校要求每天7点起床打卡,但是实在做不到,遂写了这个脚本. 绪论 由于晓黑板不支持网页版,只能使用App进行打卡,所以我使用网易的安 ...
- 创建PyCharm工程
- Linux内存管理解析(三) : 内核对内核空间的内存管理
内核采用 struct page 来表示一个物理页,在其中记载了诸多物理页的属性,比如 物理页被几个线程使用(如若没有则表示该页可以释放),页对应的虚拟地址. 首先需要知道的是,分配物理页可以分为两个 ...
- html语义化的意义
易于用户阅读,样式丢失的时候能让页面呈现清晰的结构. 有利于SEO,搜索引擎根据标签来确定上下文和各个关键字的权重. 方便其他设备解析,如盲人阅读器根据语义渲染网页 有利于开发和维护,语义化更具可读性 ...
- 13.Android-ListView使用、BaseAdapter/ArrayAdapter/SimpleAdapter适配器使用
1.ListView ListView 是 Android 系统为我们提供的一种列表显示的一种控件,使用它可以用来显示我们常见的列表形式.继承自抽象类 AdapterView.继承图如下所示: 以微信 ...
- App工程结构
在经过千辛万苦各种填坑终于安装好了Android Studio之后,在其自带的模拟器上成功运行了第一个APP(hello world),通过这个APP首先研究了一下APP基本的工程结构,从而使后面的开 ...
- Elasticsearch之增加和删除索引
增加索引 利用postMan工具发送restfulAPI添加索引库 请求方式为put代表添加 创建索引index时映射mapping 请求URL: 使用put发送http://localhost:92 ...
- Session注销后,浏览器后退仍显示Session信息
初学JavaWeb,在一次测试登录功能的时候,发现了登进去后,点击退出按钮注销session,浏览器按后退能够显示session信息,并且点击登录还能够不输入密码登录(前端页面没写JS限制输入后登录) ...
- VB程序去nag
VB程序去nag 我遇到的vb的nag情况是程序一开始就跳出一个nag,汇编代码如下 push AfKayAs_.004067D4 call <jmp.&MSVBVM50.#100> ...
- [Python自学] Flask框架 (1) (Flask介绍、配置、Session、路由、请求和响应、Jinjia2模板语言、视图装饰器)
oldboy:s9day114 参考博客:https://www.cnblogs.com/wupeiqi/articles/7552008.html 一.Flask简介 1.安装Flask pip i ...