#include <myhead.h>
#define IP "192.168.2.41"
#define PORT 69
#define ERR_MSG(msg) do{\
fprintf(stderr,"line:%d file:%s fun:%s",__LINE__,__FILE__,__func__);\
perror(msg);\
}while(0);
int main(int argc, const char *argv[])
{
//创建流式套接字
int sfd=socket(AF_INET,SOCK_DGRAM,0);
if(sfd<0)
{
ERR_MSG("socket");
return -1;
}
//
printf("create socket success\n");
int reuse=1;
if(setsockopt(sfd,SOL_SOCKET,SO_REUSEADDR,&reuse,sizeof(reuse))<0)
{
ERR_MSG("setsockopt");
return -1;
}
struct sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_port = htons(PORT);
sin.sin_addr.s_addr = inet_addr(IP);
//将套接字设置为被动监听状态
// char buf[128] = "";
struct sockaddr_in cin;
socklen_t addrlen=sizeof(cin);
char buf[516]="";
char buf1[5]="";
char databuf[512]="";
int i;
char text[15]="5.png";
int size=sprintf(buf,"%c%c%s%c%s%c",0,1,text,0,"octet",0);
sendto(sfd,buf,size,0,(struct sockaddr*)&sin,sizeof(sin));
// sendto(sfd,&a.num,sizeof(a.num),0,(struct sockaddr*)&sin,sizeof(sin));
printf("发送成功\n");
bzero(buf,sizeof(buf));
size_t len=0;
printf("发送成功\n");
int fd;
if((fd=open(text,O_WRONLY|O_CREAT|O_APPEND,0664))<0)
{
ERR_MSG("open file");
return -1;
}
while((len=recvfrom(sfd,buf,sizeof(buf),0,(struct sockaddr *)&cin,&addrlen))>=512)
{ // socklen_t addrlen=sizeof(cin);
for(i=0;i<4;i++)
buf1[i]=buf[i];
printf("数据包前四位\n");
buf1[1]++;
for(i=4;i<len;i++)
{
databuf[i-4]=buf[i];
}
write(fd,databuf,sizeof(databuf));
size=sprintf(buf1,"%c%c%c%c",buf1[0],buf1[1],buf1[2],buf1[3]);
sendto(sfd,buf1,size,0,(struct sockaddr*)&cin,sizeof(cin));
// while(1);
printf("11\n");
printf("{server IP:%s DNS:%d}接收服务器数据为:%s\n",inet_ntoa(cin.sin_addr),ntohs(cin.sin_port),buf);
bzero(buf,sizeof(buf));
}
bzero(databuf,sizeof(buf));
for(i=0;i<4;i++)
buf1[i]=buf[i];
printf("数据包前四位\n");
buf1[1]++;
for(i=4;i<len;i++)
{
databuf[i-4]=buf[i];
}
write(fd,databuf,len-4);
//发送
//关闭套接字文件描述符
close(sfd);
return 0;
}
08-10
239
09-15
101
10-22
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交