16,787
社区成员




receiver = new QUdpSocket(this);
connect(receiver, SIGNAL(readyRead()), this, SLOT(dataReceived()),Qt::AutoConnection);
port = 12345;
if (!receiver->bind(port, QUdpSocket::ShareAddress)) {
QMessageBox::information(this,tr("error"),tr("udp socket create error!"));
return;
}
static unsigned long recvCount = 0;
void Receiver::dataReceived()
{
// 拥有等待的数据报
while(receiver->hasPendingDatagrams())
{
QByteArray datagram;
datagram.resize(receiver->pendingDatagramSize());
receiver->readDatagram(datagram.data(), datagram.size());
recvCount += datagram.size();
qDebug()<<"====== "<<recvCount;
//reveiveData->append(datagram);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int mSock = createSocket(UDP_SOCK);
struct sockaddr_in fromAddr;
int fromLen = sizeof(fromAddr);
char recvBuf[2048]={0};
unsigned long mCount = 0;
bindSocket(mSock,12345);
while(1){
int recvLen = recvfrom(mSock,recvBuf,sizeof(recvBuf), 0,(struct sockaddr *)&fromAddr, &fromLen);
if(recvLen <= 0){
//QThread::usleep(1000);
continue;
}
mCount += recvLen;
printf(" ==== %d\n",mCount);
}
return 0;
}
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
createThread();
}
Widget::~Widget()
{
QThread::msleep(1000);
delete ui;
}
void udpRecvThread()
{
int mSock = createSocket(UDP_SOCK);
struct sockaddr_in fromAddr;
int fromLen = sizeof(fromAddr);
char recvBuf[2048]={0};
unsigned long mCount = 0;
bindSocket(mSock,12345);
while(1){
int recvLen = recvfrom(mSock,recvBuf,sizeof(recvBuf), 0,(struct sockaddr *)&fromAddr, &fromLen);
if(recvLen <= 0){
continue;
}
mCount += recvLen;
qDebug()<<"***"<<mCount;
}
}
void Widget::createThread()
{
DWORD stateThreadID = 0;
HANDLE udpThreadHandle= CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)udpRecvThread,NULL,0,&stateThreadID);
if(udpThreadHandle==NULL){
printf("create state send speed thread ERR\n");
}
}