UDP
UDP通信是无连接的,不可靠但是传输效率高, UDP就像是写信,知道地址即可,TCP就像是打电话,确保目标正确。 在UDP服务器端,通信套接字直接绑定,如果对方发数据,套接字自动触发readyRead(),发是通过槽函数实现。 在UDP客户端,通信套接字直接绑定,如果对方发数据,套接字自动触发readyRead(),发是通过槽函数实现。 实际上,UDP并不着重区分客户端与服务器端,两者都是只需要一个通信套接字,并不需要监听,当通信套接字的readyRead信号有效之后自动读取。
//QTUDP
void Demo::sendLocalFile()
{
QEventLoop eventloop;
QTimer::singleShot(500,&eventloop,SLOT(quit()));
eventloop.exec();
QDir dir("./screen");
if(dir.exists())
{
QString path=dir.absolutePath();
dir.setFilter(QDir::Files|QDir::NoSymLinks);
QFileInfoList _qslist=dir.entryInfoList();
uint timestamp=0;
QFileInfo _localFile;
for each(QFileInfo fileInfo in _qslist)
{
uint _time=fileInfo.lastModified().toTime_t();
if(timestamp<_time)
{
timestamp=_time;
_localFile = fileInfo;
}
}
Deploy _deploy;
_deploy.Code = 12;
_deploy.Length=path.size()+sizeof("/")+_localFile.fileName().size();
memset(_deploy.Name,0,sizeof(_deploy.Name));
QByteArray _qByte;
_qByte.append((char*)&_deploy, sizeof(_deploy));
_qByte.append(path);
_qByte.append("/");
_qByte.append(_localFile.fileName());
QHostAddress _add("127.0.0.1");
quint16 _port =80;
mSocket->writeDatagram(_qByte,_qByte.size(),_add,_port);
QString _local(path+"/"+_localFile.fileName());
QString _remote("/test/"+_localFile.fileName());
_ftp.uploadDataByFtp(_local,_remote);
}
}