我怎样才能在C中创建路由表查找?

时间:2015-11-08 15:47:51

标签: c routing ip ip-address packets

分配要求您设计路由器表查找例程,该例程将从模拟帧(实际上是模拟帧中的数据包)中获取目标IP地址,然后执行路由表的搜索(保持简单说2 x 2数组,其中一列是已知的IP地址,另一列是模拟框中的端口,您可以在该框中引导绑定到此IP的数据包。

我一直在研究这个问题,而且我被困住了。有人能帮我吗!我已经创建了一个文本文件并尝试将其插入到项目中,但它仍然没有检测到它。我不知道还能做什么。提前致谢!!

#include <stdio.h>
#include "stdlib.h"
#include "string.h"

void Ouccpy_Routing_Table();

typedef struct RTE
{
unsigned long Dest;
int port;
unsigned long Route;
};



Route[120]; 
struct IP
{
unsigned char Ipverison;
unsigned char TOS;
unsigned short ID;
unsigned short Fragoffset;
unsigned char TTL;
unsigned char Protcl;
unsigned char dcheksum;
unsigned char Data[1];

};

int main()
{
int count;

FILE *ptr_testfile;

struct IP my_testfile;

ptr_testfile = fopen_s("c:\\testroute\\TEST.txt", "rb");

if (!ptr_testfile)
{
    printf("Cannot Open File!");

    return 1;
}

while (count = 2) count <= (sizeof(struct IP)); count++;
{

    fread(&my_testfile, sizeof(struct IP), 2, ptr_testfile);

}

fclose(ptr_testfile);

return 0;
}

void Ouccpy_Routing_Table()
{

}

2 个答案:

答案 0 :(得分:0)

将文本文件放在相应的位置。

  • C:\ testroute \ TEST.TXT

在编译之前验证它。如果问题仍然存在,请发布错误代码?

答案 1 :(得分:0)

关于代码尝试打开文件的方式

ptr_testfile = fopen_s("c:\\testroute\\TEST.txt", "rb");

编译器至少应该警告你没有提供足够的参数。

如果您已经阅读了documentation to fread_s(),那么您应该已经知道它本应该被调用:

errno_t en = fopen_s(&ptr_testfile, "c:\\testroute\\TEST.txt", "rb");
if (0 != en)
{
   issue some error message here
}

作为替代方案,您可以使用标准fopen()代替Microsoft特定fopen_s()fopen()会像原始代码那样被调用。

while (count = 2) count <= (sizeof(struct IP)); count++;
{
  fread(...);
}

相同
while (count = 2) 
  count <= (sizeof(struct IP)); 

count++;

{
  fread(...);
}

又与

相同
while (count = 2) /* This repeatly assigns 2 to count. Resulting in an infinite loop.*/
{
  count <= sizeof(struct IP); /* This does nothing. */
}

/* Because of the infinite loop above the code never arrives here. */

count++; 

fread(...);

请再看一下。