qt 套接字的类型,想使用和VC中一样的原始套接字,有谁知道在QT中如何做才能设置成原始套接字。
答案:1 悬赏:50 手机版
解决时间 2021-02-04 08:58
- 提问者网友:太高姿态
- 2021-02-03 16:42
qt 套接字的类型,想使用和VC中一样的原始套接字,有谁知道在QT中如何做才能设置成原始套接字。
最佳答案
- 五星知识达人网友:十鸦
- 2021-02-03 17:05
是QTCpSocket这个类吗?追问在VC++中时可以设置SOCKET的类型为SOCK_RAW,这个就是原始套接字,但是在QT中不知道怎么设置,然后才能实现从网卡上抓取数据包。追答void searve::on_sendpushButton_clicked()
{
QTextStream out(m_socket);
out<text();
}
void searve::on_connectpushButton_clicked()
{
m_socket = new QTcpSocket(this);
connect(m_socket,SIGNAL(readyRead()),
this,SLOT(recvData()));
connect(m_socket,SIGNAL(disconnected()),
this,SLOT(slotDisconnected()));
connect(m_socket,SIGNAL(connected()),
this,SLOT(slotConnected()));
connect(m_socket,SIGNAL(error(QAbstractSocket::SocketError)),
this,SLOT(slotError()));
m_socket->connectToHost(ui.hostlineEdit->text(),
ui.portlineEdit->text().toInt());
}
void searve::recvData()
{
QTextStream in(m_socket);
while(m_socket->bytesAvailable()>0)
{
ui.listWidget->addItem(in.readLine());
}
}
void searve::slotDisconnected()
{
ui.statuslabel->setText("disconnect from host");
ui.msglineEdit->setEnabled(false);
ui.sendpushButton->setEnabled(false);
}
void searve::slotConnected()
{
ui.statuslabel->setText("Connected to host");
}
void searve::slotError()
{
QMessageBox::warning(this,"Socket Error",
m_socket->errorString());
}
void searve::on_quitpushButton_clicked()
{
close();
}
这是我自己写的一个客户端的小程序 你看能帮助你不?追问你这个套接字可以接受到流经网卡的所有的数据包吗?
{
QTextStream out(m_socket);
out<
}
void searve::on_connectpushButton_clicked()
{
m_socket = new QTcpSocket(this);
connect(m_socket,SIGNAL(readyRead()),
this,SLOT(recvData()));
connect(m_socket,SIGNAL(disconnected()),
this,SLOT(slotDisconnected()));
connect(m_socket,SIGNAL(connected()),
this,SLOT(slotConnected()));
connect(m_socket,SIGNAL(error(QAbstractSocket::SocketError)),
this,SLOT(slotError()));
m_socket->connectToHost(ui.hostlineEdit->text(),
ui.portlineEdit->text().toInt());
}
void searve::recvData()
{
QTextStream in(m_socket);
while(m_socket->bytesAvailable()>0)
{
ui.listWidget->addItem(in.readLine());
}
}
void searve::slotDisconnected()
{
ui.statuslabel->setText("disconnect from host");
ui.msglineEdit->setEnabled(false);
ui.sendpushButton->setEnabled(false);
}
void searve::slotConnected()
{
ui.statuslabel->setText("Connected to host");
}
void searve::slotError()
{
QMessageBox::warning(this,"Socket Error",
m_socket->errorString());
}
void searve::on_quitpushButton_clicked()
{
close();
}
这是我自己写的一个客户端的小程序 你看能帮助你不?追问你这个套接字可以接受到流经网卡的所有的数据包吗?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯