- 论坛徽章:
- 0
|
自己进行了更新,请使用新的代码。
更新内容:
1.不需要修改/etc/services 文件了。
2.修正了在SessionID过大的时候不能更正的问题(把char 改成 unsigned char,业余就是业余)
3.去掉了很多不必要的代码。
已知的问题:
只能连接256分钟,要等我哪次能连续上4个小时以上,才知道数据的表示方法。
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <unistd.h>
#define UDPMSGLEN 10
#define SERVERPORT 8090
int main(){
void setdata(const int ,unsigned char *);
char *host;
int sockfd;
int len,sid,i;
struct sockaddr_in address;
struct hostent *hostinfo;
unsigned char buffer[10];
scanf("%d",&sid);
printf("sessionID is %d\n",sid);
host="211.160.92.162";
// host="127.0.0.1"; //for testing only
hostinfo=gethostbyname(host);
sockfd=socket(AF_INET,SOCK_DGRAM,0);
address.sin_family=AF_INET;
address.sin_port=htons(SERVERPORT);
address.sin_addr=*(struct in_addr *)*hostinfo->h_addr_list;
len=sizeof(address);
setdata(sid,buffer);
for(i=0;i<256;i++){ //256 minutes only
buffer[1]=i;
sendto(sockfd,buffer,UDPMSGLEN,0,(struct sockaddr *)&address,len);
sleep(60);
printf("sleeping 60 seconds and resend packet ...\n");
}
close(sockfd);
return 0;
}//end of main
void setdata(const int sid,unsigned char *buffer)
{
int i;
buffer[0]=5;
for (i=5;i<8;i++) buffer[i]=0;
buffer[8]=(sid&65280)>>8;
buffer[9]=(sid&255);
} |
|