- 论坛徽章:
- 0
|
客服端
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <time.h>
#include <sys/time.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#define PORT 2080
struct msg_ntp
{
int msg_type;
unsigned long org[2];
unsigned long rec[2];
char ntp_ip[16];
};
int constructpacket(char *packet,struct msg_ntp ntpdata)
{
memset(&packet[0],0,100);
int k=sizeof(char);
memcpy(&packet[0],&ntpdata.org[0],4);
memcpy(&packet[4],&ntpdata.org[1],4);
memcpy(&packet[8],&ntpdata.rec[0],4);
memcpy(&packet[12],&ntpdata.rec[1],4);
memcpy(&packet[16],&ntpdata.ntp_ip,16*k);
return (16+16*k);
}
int main()
{
struct msg_ntp packetip;
int msgid,res=1,s,i;
char szc_temp[256];
memset(szc_temp,0,100);
packetip.msg_type=1;
packetip.org[0]=123456789;
packetip.org[1]=234567890;
packetip.rec[0]=345678902;
packetip.rec[1]=456789032;
packetip.ntp_ip[16]="192.168.2.80";
int packetlen=0;
packetlen=constructpacket(szc_temp,packetip);
struct sockaddr_in server_addr;
int portno=PORT;
s=socket(PF_INET, SOCK_DGRAM,0);
if(s < 0)
{
perror("socket");
return;
}
server_addr.sin_family=AF_INET;
server_addr.sin_addr.s_addr = inet_addr("192.168.2.30");
server_addr.sin_port=htons(portno);
while(1)
{
i=sendto(s,szc_temp,packetlen,0,(struct sockaddr*)&server_addr,sizeof(server_addr));
if(i < 0)
{
perror("sendto");
}
else {
sleep(5);
}
}
}
服务器
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <time.h>
#include <sys/time.h>
#include <sys/socket.h>
#include <arpa/inet.h>
void main()
{
int portno=2080,sin_size,i,k;
struct sockaddr_in server_addr,client;
int s,packlen;
pthread_t id1;
k=sizeof(char);
int n=1;
char msg[100], iptable[16*k];
ulong array[4];
s=socket(PF_INET, SOCK_DGRAM,0);
if(s < 0)
{
perror("socket");
return;
}
bzero(&server_addr, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
server_addr.sin_port = htons(portno);
if(bind(s,(struct sockaddr *)&server_addr,sizeof(struct sockaddr))==-1){
perror("bind error");
}
sin_size=sizeof(struct sockaddr_in);
while(1){
i=recvfrom(s,msg,100,0,(struct sockaddr*)&client,&sin_size);
if(i<0)continue;
else{
memcpy((void *)&array[0],&msg[0],4);
memcpy((void *)&array[1],&msg[4],4);
memcpy((void *)&array[2],&msg[8],4);
memcpy((void *)&array[3],&msg[12],4);
memcpy((void *)&iptable,&msg[16],16*k);
printf("%u,%u,%u,%u,%s\n",array[0],array[1],array[2],array[3],iptable);
}
}
close(s);
}
服务器显示
123456789,234567890,345678902,456789032,垤反h驼筐?
123456789,234567890,345678902,456789032,垤反h驼筐?
123456789,234567890,345678902,456789032,垤反h驼筐?
123456789,234567890,345678902,456789032,垤反h驼筐?
123456789,234567890,345678902,456789032,垤反h驼筐?
123456789,234567890,345678902,456789032,垤反h驼筐?
123456789,234567890,345678902,456789032,垤反h驼筐?
123456789,234567890,345678902,456789032,垤反h驼筐?
123456789,234567890,345678902,456789032,垤反h驼筐?
123456789,234567890,345678902,456789032,垤反h驼筐?
123456789,234567890,345678902,456789032,垤反h驼筐?
123456789,234567890,345678902,456789032,垤反h驼筐?
123456789,234567890,345678902,456789032,垤反h驼筐?
123456789,234567890,345678902,456789032,垤反h驼筐?
123456789,234567890,345678902,456789032,垤反h驼筐?
123456789,234567890,345678902,456789032,垤反h驼筐?
123456789,234567890,345678902,456789032,垤反h驼筐?
123456789,234567890,345678902,456789032,垤反h驼筐?
123456789,234567890,345678902,456789032,垤反h驼筐?
123456789,234567890,345678902,456789032,垤反h驼筐?
123456789,234567890,345678902,456789032,垤反h驼筐?
123456789,234567890,345678902,456789032,垤反h驼筐?
123456789,234567890,345678902,456789032,垤反h驼筐?
为什么显示的ip地址显示 垤反h驼筐?
请高人指点?
谢谢! |
|