2006-5-12 10:15
土拨鼠2811
关于tftp错误信息的问题
fpsh = fopen("/bin/tftpshell","w");
if(fpsh != NULL)
{
fprintf(fpsh,"#!/bin/sh\n");
fprintf(fpsh,"tftp %s\n", dot_dec_ip_addr);
fclose(fpsh);
}
else
{
PRINT_INFO("open new file error \n");
return 1;
}
chmod("/bin/tftpshell", S_IRWXU|S_IRWXG);
fp=popen("./tftpshell","w");
if(fp!=NULL)
{
fprintf(fp,"bin\n");
fprintf(fp,"get %s\n", fil_nam);
fprintf(fp,"quit\n");
pclose(fp);
}
else
{
PRINT_INFO("popen tftp error \n");
return 1;
}
这段代码是利用脚本和popen管道实现登陆tftp服务器并且下载文件的小程序,dot_dec_ip_addr是从外部传入的tftp服务器ip地址,fil_nam是从外部传入的要下载的文件名,正常情况下是完全没问题的,但是如果tftp服务器没开,或者服务器上没有我要下载的这个文件,这样的出错信息应该到什么地方找呢?只要ip地址正确,就始终不可能进入popen的出错程序中,就是最后的这个else段中。各位大虾帮帮忙吧,很急的,谢谢了
2006-6-6 15:53
KGB
不太懂编成, 不过记得在 TFTP 包里的第5个包好象是 ERROR 包吧(就是那个操作号是5的包), 那里定义了错误类型, 是给程序员用的:
0 未定义,请参阅错误信息(如果提示这种信息的话)
1 文件未找到
2 访问非法
3 磁盘满或超过分配的配额
4 非法的TFTP操作
5 未知的传输ID
6 文件已经存在
7 没有类似的用户