C++ tun/tap接口的write()返回;无效参数";
我已成功创建并连接到tap接口。 我也可以从界面上阅读,没有问题。 但试图写入它却无法报告“无效参数”。守则如下:C++ tun/tap接口的write()返回;无效参数";,c++,linux,qt,tun-tap,C++,Linux,Qt,Tun Tap,我已成功创建并连接到tap接口。 我也可以从界面上阅读,没有问题。 但试图写入它却无法报告“无效参数”。守则如下: int TapInterface::write(char *buf, int n) { int nwrite; if((nwrite=::write(this->my_tap_fd, buf, n))<0) { qDebug("Writing data") ; perror("Error:"); exit(1); } return n
int TapInterface::write(char *buf, int n)
{
int nwrite;
if((nwrite=::write(this->my_tap_fd, buf, n))<0)
{
qDebug("Writing data") ;
perror("Error:");
exit(1);
}
return nwrite;
}
....
....
QByteArray txData("hello");
write(txData.data(), txData.length());
intTapInterface::write(char*buf,intn)
{
int-nwrite;
if((nwrite=::write(this->my\u tap\u fd,buf,n))哪一行给出了错误?很抱歉,响应太晚;write函数返回-1,即:write(this->my\u tap\u fd,buf,n),因此输入了if语句和“无效参数”perror报告了错误代码。代码中的最后两行显示了我实际上是如何调用函数的。您确定您的QIODevice
已正确打开吗?可以看出,我在tap界面中写的是一个示例“hello”msg!这可能是问题的根源吗?它应该是一个有效的以太网帧/ip包吗?解决了,正如我猜测的那样:写入tun/tap接口的数据应该是一个有效的pkt/帧