#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <netinet/in.h>
#include <errno.h>
#include <unistd.h>

#define MAXLINE 4096

void str_cli(FILE *fp, int sockfd) {
  int n;
  char sendline[MAXLINE+1], recvline[MAXLINE+1];

  if((fp = fopen("/root/iplist", "r")) == NULL) {
    printf("fopen error");
    exit(-1);
  }

  while(fgets(sendline, MAXLINE, fp) != NULL) {
    if((write(sockfd, sendline, strlen(sendline))) != strlen(sendline)) {
      printf("write error\n");
      exit(-1);
    }

    if((n=read(sockfd, recvline, MAXLINE)) < 0) {
      printf("read error\n");
      exit(-1);
    }
    recvline[n]=0;

    if(fputs(recvline, stdout) == EOF) {
      printf("fputs error\n");
      exit(-1);
    }
  }

  if(fclose(fp) == EOF) {
    printf("fclose error\n");
    exit(-1);
  }
}

int main(int argc, char **argv) {
  int sockfd;
  struct sockaddr_in servaddr;
  FILE *fp;

  if(argc != 2) {
    printf("usage: a.out <IPaddress>\n");
    exit(-1);
  }

  if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
    printf("socket error");
    exit(-1);
  }

  bzero(&servaddr, sizeof(servaddr));
  servaddr.sin_family=AF_INET;
  servaddr.sin_port=htons(8000);

  if(inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0) {
    printf("inet_pton error");
    exit(-1);
  }

  if(connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0) {
    printf("connect error");
    exit(-1);
  }

  str_cli(fp, sockfd);

  exit(0);
}

客户端打开本地文件,发送给服务器端,然后服务器端再把内容回射回来。

TCP打开文件传输(客户端code)的更多相关文章

  1. TCP打开文件传输(服务器端并发code)

    #include <stdio.h>#include <stdlib.h>#include <arpa/inet.h>#include <sys/types. ...

  2. java实现两台电脑间TCP协议文件传输

    记录下之前所做的客户端向服务端发送文件的小项目,总结下学习到的一些方法与思路. 注:本文参考自<黑马程序员>视频. 首先明确需求,在同一局域网下的机器人A想给喜欢了很久的机器人B发送情书, ...

  3. SSH-Secure-Shell 3.2.9 build283版本,创建直接打开文件传输的快捷方式的方法

    2019-12-31 16:21:23 版本信息: 在安装目录下新建快捷方式 目标填写:"D:\SSH-Secure-Shell\SshClient.exe" /f 图标选择,系统 ...

  4. 基于UDT connect连接通信以及文件传输--客户端

    上面一篇文章中提出了服务端的,其实这里没有严格意义的服务端和客户端之分,因为我在代码中是基于UDP的,不存在服务端与客户端,两个都是对等的,只是我这里进行一下简单的区分而已.在这里,客户端所进行的主要 ...

  5. 通过TCP实现文件传输

    import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.In ...

  6. 循序渐进Java Socket网络编程(多客户端、信息共享、文件传输)

    目录[-] 一.TCP/IP协议 二.TCP与UDP 三.Socket是什么 四.Java中的Socket 五.基本的Client/Server程序 六.多客户端连接服务器 七.信息共享 八.文件传输 ...

  7. QT从入门到入土(九)——TCP/IP网络通信(以及文件传输)

    引言 TCP/IP通信(即SOCKET通信)是通过网线将服务器Server端和客户机Client端进行连接,在遵循ISO/OSI模型的四层层级构架的基础上通过TCP/IP协议建立的通讯.控制器可以设置 ...

  8. Linux网络编程:UDP实现可靠的文件传输

    我们知道,用TCP实现文件传输很简单.相对于TCP,因为UDP是面向无连接.不可靠的传输协议,所以我们需要考虑丢包和后发先至(包的顺序)的问题,所以我们想要实现UDP传输文件,则需要解决这两个问题.方 ...

  9. Go网络文件传输

    流程分析 借助TCP完成文件的传输,基本思路如下: 发送方(客户端)向服务端发送文件名,服务端保存该文件名. 接收方(服务端)向客户端返回一个消息ok,确认文件名保存成功. 发送方(客户端)收到消息后 ...

随机推荐

  1. Windows下环境变量显示、设置或删除操作详情

    显示.设置或删除 cmd.exe 环境变量. SET [variable=[string]] variable 指定环境变量名. string 指定要指派给变量的一系列字符串. 要显示当前环境变量,键 ...

  2. 【sqli-labs】 less51 GET -Error based -Order By Clause -String -Stacked injection(GET型基于错误的字符型Order By从句堆叠注入)

    less50的字符型版本,闭合好引号就行 http://192.168.136.128/sqli-labs-master/Less-51/?sort=1';insert into users(id,u ...

  3. Eclipse安装egit Github教程

    网址:http://download.eclipse.org/egit/updates 教程: http://jingyan.baidu.com/article/4853e1e529483c1909f ...

  4. Vue中this.$router.push参数获取(通过路由传参)【路由跳转的方法】

    传递参数的方法: 1.Params 由于动态路由也是传递params的,所以在 this.$router.push() 方法中 path不能和params一起使用,否则params将无效.需要用nam ...

  5. demo记录

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http ...

  6. ES6学习历程(字符串的扩展)

    字符串的扩展 在看这一节的时候前半部分写的都是关于unicode的内容,我个人感觉这部分在实际的开发中用的很少,所以不打算在做记录,等届时用到再有针对性的看,所以就将在ES6里面关于字符串操作的一些新 ...

  7. git连接github mac

    话不多说,终端里的代码直接复制过来 Last login: Fri May 17 21:45:31 on ttys000 liuduoduodeMacBook-Air:~ liuxiangyang$ ...

  8. [luogu4728 HNOI2009] 双递增序列 (dp)

    传送门 Solution 前几天刚做了类似题,这种将一个序列拆分为两个单调序列的题一般都是设\(dp[i]\)表示i为一个单调序列的末尾时,另一个序列的末尾是多少 然后应用贪心的思想,在这道题中就是让 ...

  9. PAT 1099. Build A Binary Search Tree (树的中序,层序遍历)

    A Binary Search Tree (BST) is recursively defined as a binary tree which has the following propertie ...

  10. 《AlwaysRun!》第八次团队作业:Alpha冲刺 第二天

    项目 内容 这个作业属于哪个课程  老师链接 这个作业的要求在哪里  实验十二 团队作业8:软件测试与Alpha冲刺 团队名称  Always Run! 作业学习目标 (1)掌握软件测试基础技术. ( ...