简单描述一下我的项目。我自己封装了 winsock api 成 类CSynchronizationSocket。
适用于server,client。根据我的需要,自己加了很多属性,我有很多的终端,假定是100台。server在accept(accept在专门的线程里)后,判断他的ip或者是网卡地址(我不清楚这个),然后给他编号。各个终端有不同的需求,每个终端对应一个线程,处理相关请求。我想把对应于每个线程的各种需求包在一个结构中,每个终端一个编号,
但编号通过什么来不清楚?是通过ip呢还是网卡呢?
哪个是不变的,在局域网里?谢谢你的回答

解决方案 »

  1.   

    和系统有关吗?我测试的是windows 2000
    好象要应用于win98的,有没有碍?
      

  2.   

    有些局域网内,IP是由DHCP服务器分配的,而每次DHCP分配的IP有可能会不相同.
      

  3.   

    我只过win2000的终端,没听过win98的终端,win98无盘倒有.
    网卡地址是固化在网卡内的芯片上的,是全世界唯一的.
      

  4.   

    难道你是想从win98登陆win2000的终端服务?
      

  5.   

    读取网卡的物理地址的子程序:
    union u {uint word; struct{uchar high;uchar low;}bytes;}; //我定义的数据结构,为两个字节的结构 //,可以按照uint(unsigned int)来读取,也可以按照高低字节high和low来读取。 union u mynodeid[3];//存储网卡的物理地址
    union u protocal; //临时变量
    void readmynodeid() 
    {uchar data i,temp;
    page(0);
    reg09=0;//寄存器RSAR1 dma read highaddress=0 
    reg08=0;//RSAR0 dma read lowaddress=0;
    reg0b=0; //RBCR1 read count high 
    reg0a=12;//RBCR0 count low 
    reg00=0x0a;//dma read and start
    for (i=0;i<6;i++)
    { temp=reg10;//读取一个字节
    if (i % 2==0)
    {protocal.bytes.high=temp;}
    else {protocal.bytes.low=temp;mynodeid[i/2].word=protocal.word;}temp=reg10;//读取一个重复的字节,这个字节被丢弃}
    }--网卡除了16k(地址0x4000-0x7FFFF)的接收发送存储RAM之外,还有别的RAM,还有一块大小为256字节的RAM,地址为0x0000-0x00FF,这部分RAM是eeprom 93C46的影像存储(不完全一样),存储的内容的一部分跟93C46存储的是一样的。 网卡在上电的时候将93C46的一部分内容读到这256字节的RAM里。
    存储是WORD类型,其中地址:
    0x0000-0x000b共12个字节是网卡的物理地址。(网卡的物理地址是6个字节的,为什么要用12字节?因为这12字节是重复存储的。例如网卡物理地址0x52544CC118CF,存储在0x0000-0x000b里是这样的:525254544C4CC1C11818CFCF
    我们可以看到单和双的地址存储的是一样的。0x000b后面的地址存储的是生产厂商的代码和产品标识代码,也是单双地址重复存储,这里就不说了。 这个程序又用到4个新的寄存器:RSAR1 RSAR0 RBCR1 RBCR0
    这4个寄存器是专门用于读取网卡上面的ram的。
    RSAR1 网卡上的RAM的起始地址高8位
    RSAR0 网卡上的RAM的起始地址低8位
    --程序中的reg09,reg08都设成0,所以是从网卡上的0x0000地址开始读。
    RBCR1 要读取的字节数的计数(高8位)
    RBCR0 要读取的字节数的计数(低8位)
    --程序中的reg0b=0,reg0a=12,所以要读取12个字节。 
    reg00=0x0a 的意思是进行DMA的内存读取操作。--结果将网卡地址存储在mynodeid[3](共6个字节)里。
      

  6.   

    我只过win2000的终端,没听过win98的终端,win98无盘倒有.  网卡地址是固化在网卡内的芯片上的,是全世界唯一的.
    i c !  难道你是想从win98登陆win2000的终端服务?服务器是win98,终端还要自己做的那种。
    现在测试是win2k,先不管win98。
      

  7.   

    谢谢prettywolf(多情自古空余,此恨绵绵无绝期) 100分我会给你,
      

  8.   

    每块网卡唯一不变的是它的物理地址。(Mac地址)
    而IP地址是网络分配给他的,如果网络有什么变动的话,IP地址就很可能改变。在局域网中,网络设备之间通讯,虽然都用IP地址标识,但它们在底层会用ARP(地址解析协议)解析出具体目标的物理地址,也就是说:它们最终是通过Mac地址来通讯的。
      

  9.   

    用win98做服务器,你是在开创历史先河呀.