资源简介

my_socket是将文件从windows传输到linux,my_socket_verify是将linux下的文件传到windows(因为我只写了单向的,verify只是做了一个验证而已)

资源截图

代码片段和文件信息

/************************************************************************* 
    > File Name: main.c (/socket client)
    > Author: Clara_Dong
    > E-mail: 947641297@qq.com  
    > Created Time: 2018年03月10日 星期六 21时15分43秒 
 ************************************************************************/  

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include  

void  error(const char *msg)//定义一个指向字符常量的指针msg,*msg的值为const,不能修改
{
    perror(msg);//将错误信息输给msg   错误输出函数
    exit(0);//程序正常退出
}

int main(int argc char *argv[])
{
int sockfdportnon=-1;
struct sockaddr_in serv_addr;//sockaddr_in结构体把port和addr 分开储存在两个变量中
struct hostent *server;//hostent是host entry的缩写hostent结构体

char buffer[256];
    if (argc < 3) {
       fprintf(stderr“usage %s hostname port\n“ argv[0]);
       exit(0);
    }
    portno = atoi(argv[2]);

//建立socket套字
    sockfd = socket(AF_INET SOCK_STREAM 0);////返回sockfdsockfd是描述符唯一标识一个socket
//AF_INET 是socket的协议族:IPV4;SOCK_STREAM是socket类型;0是指的是protocol指定协议,当protocol为0时,会自动选择type类型对应的默认协议
    if (sockfd < 0) 
        error(“ERROR opening socket“);
    server = gethostbyname(argv[1]);
    if (server == NULL) {
        fprintf(stderr“ERROR no such host\n“);
        exit(0);
    }
    bzero((char *) &serv_addr sizeof(serv_addr));

//初始化ip和port
    serv_addr.sin_family = AF_INET;
    bcopy((char *)server->h_addr(char *)&serv_addr.sin_addr.s_addrserver->h_length);
    serv_addr.sin_port = htons(portno);//htons是将整形变量从主机字节顺序变成网络字节顺序

//connect将socket套接字描述符与服务器端的ip+port联系起来
//调用connect函数
    if (connect(sockfd(struct sockaddr *) &serv_addrsizeof(serv_addr)) < 0) 
        error(“ERROR connecting“);
//建立连接
printf(“Connecting...“);
FILE*fp=fopen(“data.txt““rb“);//以二进制方式打开文件
if(fp == NULL){//检验data.txt文件是否存在
printf(“Cannot open the file check out please.“);
system(“pause“);
exit(0);
}
bzero(buffer256);
int nCount;
while((nCount=fread(buffer1256fp))>0){//fread读取成功返回值为实际读回的数据个数(单位为Byte)
n=write(sockfdbuffernCount);
}

//发送信息
    //n = write(sockfdbufferstrlen(buffer));//将buffer里面的整个内容都写到sockfd里面去
    if (n < 0) 
         error(“ERROR writing to socket“);
    bzero(buffer256);
//接收回复
    n = read(sockfdbuffer255);
    if (n < 0) 
         error(“ERROR reading from socket“);
    printf(“%s\n“buffer);
fclose(fp);

//确认通信后关闭socket
    close(sockfd);
    return 0;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-03-11 09:18  my_socket\
     目录           0  2018-03-10 21:20  my_socket\client\
     文件         292  2017-10-25 16:46  my_socket\client\Makefile
     文件        4750  2018-03-10 15:48  my_socket\client\data.txt
     文件        3043  2018-03-10 21:16  my_socket\client\main.c
     文件        2693  2018-03-10 21:20  my_socket\client\main.o
     文件       71150  2018-03-10 21:20  my_socket\client\socket_client.exe
     目录           0  2018-03-11 09:08  my_socket\server\
     文件         539  2017-10-25 16:46  my_socket\server\Makefile
     文件        2234  2018-03-11 09:07  my_socket\server\main.c
     文件        7452  2018-03-10 21:20  my_socket\server\main.o
     文件       11886  2018-03-10 21:20  my_socket\server\socket_server
     目录           0  2018-03-10 18:17  my_socket_verify\
     目录           0  2018-03-10 21:23  my_socket_verify\client\
     文件         292  2017-10-25 16:46  my_socket_verify\client\Makefile
     文件        2778  2018-03-10 21:17  my_socket_verify\client\main.c
     文件        2511  2018-03-10 21:23  my_socket_verify\client\main.o
     文件        4750  2018-03-10 21:28  my_socket_verify\client\recdata.txt
     文件       70766  2018-03-10 21:23  my_socket_verify\client\socket_client.exe
     目录           0  2018-03-10 21:24  my_socket_verify\server\
     文件         539  2017-10-25 16:46  my_socket_verify\server\Makefile
     文件        2269  2018-03-10 21:17  my_socket_verify\server\main.c
     文件        7480  2018-03-10 21:24  my_socket_verify\server\main.o
     文件       11915  2018-03-10 21:24  my_socket_verify\server\socket_server

评论

共有 条评论