📄 service.cpp
字号:
#include <stdio.h>
#include <conio.h>
#include "mytypes.h"
#include "mysock.h"
int Service(SOCKET s, int port, u_long addr);
int main(int argc, char *argv[])
{
SOCKET s;
int id;
if(argc == 1)
{
printf("Usage: %s ID\n",argv[0]);
return 0;
}
sscanf(argv[1],"%d",&id);
if( id < 0 || id >9)
{
printf("%s out of range [1..9]\n",argv[1]);
return 0;
}
s = OpenSocket(IPPROTO_UDP);
if(s == INVALID_SOCKET)
SockErrMsg();
Service(s,3000+id,0x7f000001);
return 0;
}
int Service(SOCKET s, int port, u_long addr)
{
SockAddr sa;
char Buff[2000];
char keys[80];
int Len;
int More = 1;
U32 c0,c1;
int k;
int i;
sa.port = port;
sa.addr = addr;
if(Bind(s,&sa) == SOCKET_ERROR)
SockErrMsg();
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 + -