TCP: 传输数据协议,可靠、面向连接。面向数据流的传输协议,适合数据的大量、连续的传输。。许多高层协议(http ftp)底层使用TCP。
UDP:用户数据报协议,简单轻量、不可靠、面向数据报、无连接的传输层协议
TCP协议的传输,一般要求先启动服务端,在启动客户端
TCPServer
主要使用两个信号
readyRead() //接收数据时,有数据的到来发出的信号
disconnected() //断开连接时产生的信号
服务端需要监听套接字和通信套接字
监听套接字:
QTcpServer *tcpServer = new QTcpServer (this);
tcpServer ->listen(QHostAddress::Any,port);
//通信套接字:
QTcpSocket *tcpsocket = new QTcpSocket(this);
connect(tcpServer,&QTcpServer::newConnection,[=]()
{
tcpsocket = tcpServer->nextPendingConnection();//取出建立的套接字
QString ip = tcpsocket->peerAddress().toString();
qint16 port = tcpsocket->peerPort();//获取对方的ip和端口
//显示对方发来的信息
connect(tcpsocket,&QTcpSocket::readyRead,=
{
QByteArray array = tcpsocket->readAll();
});
});
发送数据:
tcpsocket->write(str.toUtf8().data());
tcpclient->disconnectFromHost(); //主动断开连接
tcpclient->close();
TCPCilent
QTcpSocket *tcpclient = new QTcpSocket(this);
//接收
connect(tcpclient,&QTcpSocket::readyRead,=
{
QByteArray array = tcpclient->readAll(); //获取对方发送的数据
});
//发送
tcpclient->connectToHost(QHostAddress(ip),port);//主动与服务器建立连接
tcpclient->write(str.toUtf8().data()); //发送数据
tcpclient->disconnectFromHost(); //主动断开连接
tcpclient->close();