找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2804|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

基于GCC_TCPIP Socket—客服端文件下載

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:51090 發(fā)表于 2014-9-17 23:02 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <fcntl.h>#define RCVPORT 1990
#define NUM 1024
#define STOP 100
union type{
int a;
char b[4];
};

int
//mynet(int my_nt)
main(void)
{
union type A;
int sd;
int i=0;
int stat_st_size=0;
int pos,pos1,fd;
char *p;
int len1;
struct sockaddr_in peer_addr;
socklen_t addr_len;
int len;
int times;
char buf[NUM];
char huancun[20];
sd = socket(PF_INET, SOCK_STREAM, 0);
if(sd < 0){
  perror("socket()");
  return -1;
}
peer_addr.sin_family = PF_INET; IPV4
peer_addr.sin_port = htons(RCVPORT);
inet_pton(PF_INET, "0.0.0.0", &peer_addr.sin_addr);//本機(jī)ip

addr_len = sizeof(peer_addr);
if(connect(sd, (void*)&peer_addr, sizeof(peer_addr)) < 0){
  fprintf(stderr,"connect()\n");
  return -1;
}
// buf[0]=(char)my_nt;//選項(xiàng)
buf[0]=1;
i=0;
while(1){
  len = write(sd, buf, 1);//發(fā)送選項(xiàng)1字節(jié)
  if(len < 0){
   fprintf(stderr, "write()\n");
   return -1;
  }
  if(len==0)
   break;
  printf("%d \n",buf[0]);
  len=read(sd,buf,4);//等待服務(wù)器回應(yīng)4字節(jié)文件長度
  if(len<0){
   perror("read()");
   return -1;
  }
  A.b[0]=buf[0];
  A.b[1]=buf[1];
  A.b[2]=buf[2];
  A.b[3]=buf[3];
   stat_st_size=A.a;
   printf("stat_st_size=%d",stat_st_size);
  if(stat_st_size==STOP)
   break;
  if(stat_st_size>0)
  {
   if(i==0){
    sprintf(huancun,"mus/%d.wma",i+1);//創(chuàng)建音樂文件
    i++;
    continue;
   }
   else
    sprintf(huancun,"pic/%d.jpg",i++);//開始創(chuàng)建圖片
    fd=open(huancun,O_RDWR|O_CREAT,0644);
    if(fd < 0){
     perror("open()");
     return -1;
    }
   while(stat_st_size){   
     pos=0;
     pos1=0;
     len=read(sd,buf+pos,NUM);
     pos+=len;
     if(len<0){
      perror("read()");
      printf("read buf fail");
      return -1;
     }
     len1=write(fd,buf-pos1,len);
     pos1+=len1;
     if(len<0){
      perror("write()");
      printf("write buf fail");
      return -1;
     }
     stat_st_size-=len;
      }
    close(fd);
    buf[0]=0;
    printf("buf0= %d \n",buf[0]);
  }
  else
   break;
}
close(sd);
return 0;
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表