?? eenetc.cpp
字號:
#include <stdio.h>
#include <conio.h>
#include "mytypes.h"
#include "mysock.h"
int eENet(IP_Addr addr, int port);
int main(int argc, char *argv[])
{
int id;
if(argc == 1)
{
printf("用法: %s 網絡ID號 (1~9,用于標識該網絡)\n",argv[0]);
return 0;
}
sscanf(argv[1],"%d",&id);
if(id < 0 || id>9)
{
printf("輸入參數錯誤: %s\n",argv[1]);
return 0;
}
printf("Emulating Ethernet starting, NetID = %s\n", argv[1]);
InitSocket();
s = OpenSocket(IPPROTO_UDP);
if(s == INVALID_SOCKET)
SockErrMsg();
eENet(3000,0x7f000000+id);
return 0;
}
int eENet(IP_Addr addr, int port)
{
char *Msg;
ChnIFace Chn;
char Buff[2000];
char keys[80];
int Len;
int More = 1;
U32 c0,c1;
int k;
int i;
if( Chn.Bind(addr,port) == SOCKET_ERROR)
sa.port = port;
sa.addr = addr;
if(Bind(s,&sa) == SOCKET_ERROR)
{
Msg = Chn.ErrMsg();
printf(Msg);
return 0;
}
printf("Service Started at[%ld.%ld.%ld.%ld,%d]\n", addr >> 24, (addr >> 16) & 0xff,(addr>>8)&0xff,addr&0xff,port);
c0=0;
c1=0;
i=0;
while(More)
{
++c1;
Len = RecvFrom(s,Buff,2000,&sa,10);
if(Len)
{
printf("[Rcv %ld]from %ld.%ld.%ld.%ld,%d\n",c0,sa.addr >>24, (sa.addr>>16)&0xff,(sa.addr>>8)&0xff,sa.addr&0xff,sa.port);
SendTo(s,Buff,Len,&sa);
++c0;
}
if(kbhit())
{
k = getche();
if(k =='\r')
{
keys[i]=0;
if(strcmp(keys,"exit") == 0)
More = 0;
i=0;
}
else
keys[i++] = k;
}
}
printf("Service terminated\n%ld turns, %ld PDU received.\n",c1,c0);
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -