#include */

#define HELLO_WORLD_SERVER_PORT    6666

#define BUFFER_SIZE 1024

#define FILE_NAME_MAX_SIZE 512

int main(int argc, char **argv)

{

if (argc != 2)

{

printf("Usage: ./%s ServerIPAddress/n",argv[0]);

exit(1);

}

//创建用于internet的流协议(TCP)socket,用client_socket代表客户机socket

int client_socket = socket(AF_INET,SOCK_STREAM,0);

if( client_socket < 0)

{

printf("Create Socket Failed!/n");

exit(1);

}

//设置一个socket地址结构server_addr,代表服务器的internet地址, 端口

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) //服务器的IP地址来自程序的参数

{

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);

//向服务器发起连接,连接成功后client_socket代表了客户机和服务器的一个socket连接

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));

//向服务器发送buffer中的数据

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);

}

//从服务器接收数据到buffer中

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{

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);

//关闭socket

close(client_socket);

return 0;

}

C语言N台服务器通信,使用socket的Linux上的C语言文件传输顺序服务器和客户端示例程序 ....相关推荐

  1. 使用socket的Linux上的C语言文件传输顺序服务器和客户

    服务器端程序的编译 gcc -o file_server file_server.c 客户端程序的编译 gcc -o file_client file_client.c 服务器程序和客户端程应当分别运 ...

  2. linux 交换机tftp服务,简单文件传输TFTP服务器搭建 Linux RHEL6

    Tftp的应用场合 1.交换机或路由器升级或备份 2.无盘工作站存放bootloader 3.嵌入式开发时装载系统 4.大规模的服务安装布署 安装 1.# yum install xinetd # y ...

  3. Java网络编程入门,包含网络相关概念、InetAddress类、套接字Socket、网络上传和下载文件等

    Java学习-11-韩顺平老师 Java-网络编程入门 目录: 01-网络相关概念 02-InetAddress类 03-套接字Socket 04-网络上传和下载文件 05-UDP网络编程 网络编程相 ...

  4. 手机传输文件服务器,手机文件传输到服务器

    手机文件传输到服务器 内容精选 换一换 本节操作介绍如何在Windows操作系统的本地主机上使用FTP上传文件到云服务器.已在待上传文件的云服务器中搭建 FTP 服务.如果您的云服务器为 Window ...

  5. 手机文件传到服务器,手机文件传输到服务器

    手机文件传输到服务器 内容精选 换一换 Winscp无法连接到服务器.SSH连接工具例如Xshell可以正常连接云服务器.其他SSH工具连接云服务器正常,但是Winscp无法连接到服务器.说明SSH服 ...

  6. python发送文件到服务器_python 使用poster模块进行http方式的文件传输到服务器的方法...

    这几天帮内部人员做一个文件传输的小工具,要用http的方式,在用django搭建了个小框架之后,如何进行传输,特别是大文件的传输,成为主要问题.经过查资料,最后选择了通过poster这个模块来进行文件 ...

  7. python文件传输模块_[宜配屋]听图阁 - python 使用poster模块进行http方式的文件传输到服务器的方法...

    这几天帮内部人员做一个文件传输的小工具,要用http的方式,在用django搭建了个小框架之后,如何进行传输,特别是大文件的传输,成为主要问题.经过查资料,最后选择了通过poster这个模块来进行文件 ...

  8. python调用http方法_python 使用poster模块进行http方式的文件传输到服务器的方法

    这几天帮内部人员做一个文件传输的小工具,要用http的方式,在用django搭建了个小框架之后,如何进行传输,特别是大文件的传输,成为主要问题.经过查资料,最后选择了通过poster这个模块来进行文件 ...

  9. Linux上配置BIP语言编译器及引擎

    BIP语言是一个强大的建模语言,本文将介绍如何在Linux上对BIP语言的编译器和引擎进行安装,并运行一个BIP2语言的HelloWorld程序.BIP语言的编译器仅在GNU/Linux系统上做过测试 ...

最新文章

  1. Socket通信总结(附C++实现)
  2. SAP 货物移动 BAPI 的简单使用 BAPI_GOODSMVT_CREATE
  3. 鹿妮倍半机器人_功能纳米组装体中多面体低聚倍半硅氧烷的旋压
  4. Oracle 11g RAC SCAN ip的原理及配置
  5. python random randint_python中random.randint和random.randrange的区别详解
  6. Aligning Plots in a Column作图列对齐
  7. css 相同的css属性_CSS中的order属性
  8. JavaScript常用算法
  9. linux 删除sysadm用户,linux 用户和组命令整理及详细介绍
  10. SQL语句练习-入门篇
  11. Android 判断当前身份证格式是否正确
  12. 已解决Pandas requires version ‘1.4.0‘ or newer of ‘sqlalchemy‘ (version ‘0.7.10‘ currently installed).
  13. 阿里云服务器购买步骤
  14. 锐龙R7PRO 4750G、锐龙R5 PRO 4650G和 锐龙R3 PRO4350G怎么样 哪个好
  15. 0x300-从头开始写操作系统-内核
  16. 朴素贝叶斯情感分析评分python_朴素贝叶斯算法下的情感分析——C#编程实现
  17. 0926物体检测和数据集
  18. Java EXCEL 表格导入导出(带下拉选-带VLOOKUP函数封装)
  19. Intellij IDEA 在win10 中输入法的输出框不跟随
  20. 证券投资学原理(韩德宗 朱晋)知识点

热门文章

  1. php中参数传值的三种方法,php cli传递参数的方法
  2. 国防科大天河计算机应用,国防科大计算机学院:让本科生进入“天河”团队
  3. 【加速实践】番外篇:numbajit
  4. html 怎么自动让图片居中显示,css中怎样让图片居中显示?
  5. ceph编译_Ceph编译:L版本及其之后的版本
  6. python生成dat文件_Ra-使用Python脚本生成shape.dat文件
  7. BPMF论文辅助笔记: 固定U,更新θU 部分推导
  8. 基于SIFT特征的全景图像拼接
  9. Matlab分布式和并行编程
  10. 支持向量机SVM原理