史啦啦 的学生作业:
【图片】
#include
#include
#include
#include
#include
#include
#include
void send_file_data(int sockfd,struct sockaddr_in *addr,int len)
{
FILE *fp = fopen("log.txt","r"); // 打开日志文件
if(!fp)
{
perror("Failed to open log.txt!");
exit(EXIT_FAILURE);
}
char buf[1024] = {0};
while(fgets(buf,sizeof(buf),fp))
{
size_t len = strlen(buf);
if(len > 0 && buf[len - 1] == '\n')
{
buf[len - 1] = '\0';
}
//通过UDP发送数据
if(sendto(sockfd,buf,strlen(buf),0,(struct sockaddr *)addr,sizeof(*addr)) < 0)
{
perror("sendto Failed");
exit(EXIT_FAILURE);
}
sleep(1);//添加延时确保数据顺序
}
fclose(fp);
}
int main(int argc,const char *argv[])
{
if(argc != 3)
{
fprintf(stderr,"Usage : %s \n",argv[0]);
exit(EXIT_FAILURE);
}
int sockfd = socket(AF_INET,SOCK_DGRAM,0);
if(sockfd < 0)
{
perror("Socket create Failed!");
exit(EXIT_FAILURE);
}
struct sockaddr_in peer_addr = {
.sin_family = AF_INET,
.sin_port = htons(atoi(argv[2])),
.sin_addr.s_addr = inet_addr(argv[1])
};
send_file_data(sockfd,&peer_addr,sizeof(peer_addr));
close(sockfd);
return 0;
}