📄 net.c
字号:
#include "phone.h"long timebase;long lastcheck;void inittime(void){struct timeval now; gettimeofday(&now,0); timebase=now.tv_sec*1000+now.tv_usec/1000; lastcheck=0;}// returns # of milliseconds since program startedunsigned long gtime2(void){struct timeval now;unsigned long t; gettimeofday(&now,0); t=now.tv_sec*1000+now.tv_usec/1000-timebase; if(t<lastcheck) { timebase-=1000*60*60*24; t+=1000*60*60*24; } lastcheck=t; return t;}int getmyip(unsigned char *dest){char name[256];int res;struct hostent *h;unsigned char **p;int i; res=gethostname(name,sizeof(name)); if(res) return -1; h=gethostbyname(name); p=(unsigned char **)h->h_addr_list; if(!p[0]) return -2; for(i=0;i<h->h_length;++i) dest[i]=p[0][i]; return h->h_length;}unsigned long gtime(void){ return gtime2()/1000;}#define MAXMSG 4096int udpsocket;struct sockaddr_in myname={0},servername={0},buddy={0};int senderlength;struct sockaddr_in sender={0};unsigned char mesg[MAXMSG]="";void getsocket(int port){int status;int val; udpsocket=socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP); if(udpsocket==-1) { perror("socket()"); exit(1); } memset(&myname,0,sizeof(myname)); myname.sin_family=AF_INET; myname.sin_addr.s_addr=htonl(INADDR_ANY); myname.sin_port=htons(port); status=bind(udpsocket,(struct sockaddr *) &myname,sizeof(myname)); if(status==-1) { perror("bind()"); exit(1); } val=sizeof(myname); status=getsockname(udpsocket,(struct sockaddr *)&myname,&val);}int putmsg(struct sockaddr_in *toname,unsigned char *msg,int len){int status; status=sendto(udpsocket,msg,len,0, (struct sockaddr *)toname,sizeof(struct sockaddr_in)); return status;}int getmsg(int msec){int size; memset(&sender,0,sizeof(sender)); senderlength=sizeof(sender); if(msec) { struct timeval timeout; fd_set readfds; int res; memset(&timeout,0,sizeof(timeout)); timeout.tv_sec=msec/1000; timeout.tv_usec=(msec%1000)*1000; FD_ZERO(&readfds); FD_SET(udpsocket,&readfds); res=select(udpsocket+1,&readfds,0,0,&timeout); if(res<=0) return -1; } size=recvfrom(udpsocket,mesg,MAXMSG,0, (struct sockaddr *)&sender,&senderlength); return size;}void nomem(int code){ printf("No memory! code %d\n",code); exit(20);}void encryptblock(uchar *data,int size,uchar *key){int i; i=0; while(i<size) { encrypt1(data+i,data+i,key); i+=8; }}void printhash(uchar *h){int i; for(i=0;i<8;++i) printf(" %02x",h[i]); printf("\n");}unsigned char specialkey[]="noda";unsigned char hashkey[8]={0xc0,0x1f,0xde,0xfd,0x3d,0x8f,0x89,0xb9};void computehash(unsigned char *dest,unsigned char *name){int i;unsigned char temp[8];char namecopy[MAXNAMESIZE+1]; memset(dest,0,8); memset(namecopy,0,sizeof(namecopy)); strncpy(namecopy,name,MAXNAMESIZE); for(i=0;i<MAXNAMESIZE;i+=8) { encrypt1(temp,namecopy+i,hashkey); dest[0]^=temp[0]; dest[1]^=temp[1]; dest[2]^=temp[2]; dest[3]^=temp[3]; dest[4]^=temp[4]; dest[5]^=temp[5]; dest[6]^=temp[6]; dest[7]^=temp[7]; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -