⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 file_client.c

📁 一个在Linux/unix下传输文件的小程序。 只有两个文件
💻 C
字号:
#include <netinet/in.h>    // for sockaddr_in#include <sys/types.h>    // for socket#include <sys/socket.h>    // for socket#include <stdio.h>        // for printf#include <stdlib.h>        // for exit#include <string.h>        // for bzero/*#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>*/#define HELLO_WORLD_SERVER_PORT    6666#define BUFFER_SIZE 1024#define FILE_NAME_MAX_SIZE 512int main(int argc, char **argv){    if (argc != 2)    {        printf("Usage: ./%s ServerIPAddress\n",argv[0]);        exit(1);    }    struct sockaddr_in client_addr;    bzero(&client_addr,sizeof(client_addr));     client_addr.sin_family = AF_INET;        client_addr.sin_addr.s_addr = htons(INADDR_ANY);    client_addr.sin_port = htons(0);      int client_socket = socket(AF_INET,SOCK_STREAM,0);    if( client_socket < 0)    {        printf("Create Socket Failed!\n");        exit(1);    }    if( bind(client_socket,(struct sockaddr*)&client_addr,sizeof(client_addr)))    {        printf("Client Bind Port Failed!\n");        exit(1);    }    struct sockaddr_in server_addr;    bzero(&server_addr,sizeof(server_addr));    server_addr.sin_family = AF_INET;    if(inet_aton(argv[1],&server_addr.sin_addr) == 0)     {        printf("Server IP Address Error!\n");        exit(1);    }    server_addr.sin_port = htons(HELLO_WORLD_SERVER_PORT);    socklen_t server_addr_length = sizeof(server_addr);    if(connect(client_socket,(struct sockaddr*)&server_addr, server_addr_length) < 0)    {        printf("Can Not Connect To %s!\n",argv[1]);        exit(1);    }    char file_name[FILE_NAME_MAX_SIZE+1];    bzero(file_name, FILE_NAME_MAX_SIZE+1);    printf("Please Input File Name On Server:\t");    scanf("%s", file_name);       char buffer[BUFFER_SIZE];    bzero(buffer,BUFFER_SIZE);    strncpy(buffer, file_name, strlen(file_name)>BUFFER_SIZE?BUFFER_SIZE:strlen(file_name));    send(client_socket,buffer,BUFFER_SIZE,0);  //int fp = open(file_name, O_WRONLY|O_CREAT);  //if( fp < 0 )    FILE * fp = fopen(file_name,"w");    if(NULL == fp )    {        printf("File:\t%s Can Not Open To Write\n", file_name);        exit(1);    }       bzero(buffer,BUFFER_SIZE);    int length = 0;    while( length = recv(client_socket,buffer,BUFFER_SIZE,0))    {        if(length < 0)        {            printf("Recieve Data From Server %s Failed!\n", argv[1]);            break;        }      //int write_length = write(fp, buffer,length);        int write_length = fwrite(buffer,sizeof(char),length,fp);        if (write_length<length)        {            printf("File:\t%s Write Failed\n", file_name);            break;        }        bzero(buffer,BUFFER_SIZE);       }    printf("Recieve File:\t %s From Server[%s] Finished\n",file_name, argv[1]);       close(fp);    close(client_socket);    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -