客户端

 1 #define  _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #include <stdlib.h>
 4 #include <string.h>
 5 //网络通信
 6 #include<winsock.h>
 7 #pragma  comment(lib,"ws2_32.lib")
 8
 9 void main()
10 {
11     //发送的消息
12     char sendbuf[1024] = { 0 };
13     //收到的消息
14     char receivebuf[1024] = { 0 };
15     //发送的长度
16     int sendlength = 0;
17     //接收的长度
18     int receivelength = 0;
19
20     //通信套接字,用于创建TCP连接
21     SOCKET socket_send;
22     //创建服务器端结构体保存ip地址以及端口号
23     SOCKADDR_IN sever_addr;
24
25     //版本,2,2版本
26     WORD wversion = MAKEWORD(2, 2);
27     //版本
28     WSADATA wsadata;
29     //获取版本对比,开始通信
30     int error = WSAStartup(wversion, &wsadata);
31     if (error != 0)
32     {
33         printf("error");
34         return;
35     }
36     //取出低八位,高八位,对比版本
37     if (LOBYTE(wsadata.wVersion) != 2 || HIBYTE(wsadata.wVersion) != 2)
38     {
39         printf(" version  error");
40         return;
41     }
42     //设置通信模式
43     sever_addr.sin_family = AF_INET;
44     sever_addr.sin_addr.S_un.S_addr = inet_addr("192.168.0.104");
45     //端口
46     sever_addr.sin_port = htons(9982);
47
48     //创建tcp通信
49     socket_send = socket(AF_INET, SOCK_STREAM, 0);
50
51     //通过套接字连接到服务器
52     connect(socket_send, (SOCKADDR*)&sever_addr, sizeof(SOCKADDR));
53
54     FILE *pfr = fopen("1.txt", "rb");
55
56
57     while (!feof(pfr))
58     {
59         fgets(sendbuf, 1024, pfr);
60         //通过套接字发送到服务器
61         sendlength = send(socket_send, sendbuf, 1024, 0);
62         memset(receivebuf, 0, 1024);//清零
63     }
64
65
66     //关闭网络
67     closesocket(socket_send);
68     WSACleanup();//关闭
69     system("pause");
70 }

服务器端

 1 #define  _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #include <stdlib.h>
 4 #include <string.h>
 5 //网络通信
 6 #include<winsock.h>
 7 #pragma  comment(lib,"ws2_32.lib")
 8
 9 void main()
10 {
11     //发送的消息
12     char sendbuf[1024] = { 0 };
13     //收到的消息
14     char receivebuf[1024] = { 0 };
15     //发送的长度
16     int sendlength = 0;
17     //收到的长度
18     int receivelength = 0;
19     // SOCKADDR结构体长度
20     int length;
21
22     //服务器套接字
23     SOCKET socket_server;
24     //连接的套接字
25     SOCKET sorket_receive;
26
27     //服务器结构体信息
28     SOCKADDR_IN sever_addr;
29     //客户端结构体信息
30     SOCKADDR_IN client_addr;
31
32     //版本,2,2版本
33     WORD wversion = MAKEWORD(2, 2);
34     //当前版本
35     WSADATA wsadata;
36     //获取版本对比,开始通信
37     int error = WSAStartup(wversion, &wsadata);
38     if (error != 0)
39     {
40         printf("error");
41         return;
42     }
43     //取出低八位,高八位,对比版本
44     if (LOBYTE(wsadata.wVersion) != 2 || HIBYTE(wsadata.wVersion) != 2)
45     {
46         printf(" version  error");
47         return;
48     }
49
50     //设置服务器结构体信息
51     sever_addr.sin_family = AF_INET;//通信
52     sever_addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//获取本地址
53     sever_addr.sin_port = htons(9982);//端口
54
55     //创建服务器套接字,接受消息  SOCK_STREAM流
56     socket_server = socket(AF_INET, SOCK_STREAM, 0);//创建
57     //把套接字与服务器结构体绑定 (绑定的是地址,端口)
58     bind(socket_server, (SOCKADDR*)&sever_addr, sizeof(SOCKADDR));
59     //服务器套接字监听
60     listen(socket_server, 5);//最大等待数目为5
61     length = sizeof(SOCKADDR);
62     //通过服务器套接字接受连接,初始化套接字sorket_receive,把连接者的信息存放在结构体client_addr中
63     sorket_receive = accept(socket_server, (SOCKADDR*)&client_addr, &length);
64
65     FILE *pfw = fopen("2.txt", "wb");
66     int flag = 0;//判断是否文件传输完
67     while (1)
68     {
69         //接收数据
70         receivelength = recv(sorket_receive, receivebuf, 1024, 0);
71         if (strlen(receivebuf) > 0)
72         {
73             flag = 1;
74             printf("客户端说:%s\n", receivebuf);
75             fputs(receivebuf, pfw);
76             memset(receivebuf, 0, 1024);//清零
77         }
78         else
79         {
80             if (flag == 1)
81             {
82                 printf("传输完成\n");
83                 break;
84             }
85         }
86     }
87
88     //释放网络
89     closesocket(sorket_receive);//关闭网络
90     closesocket(socket_server);
91     WSACleanup();//关闭
92     system("pause");
93 }

转载于:https://www.cnblogs.com/xiaochi/p/8468476.html

98.TCP通信传输文件相关推荐

  1. c++语言 tcp例子,C++中TCP通信实现文件传输

    作为Computer networks课程的一个project,我们需要实现用TCP在mininet中client和server的相互通信,需要能够传输文本文件,binary file 和image ...

  2. java如何实现tcp传输图像_如何在java中实现TCP服务器和TCP客户端传输文件

    我实现了简单的TCP服务器和TCP客户端类,可以从客户端发送消息到服务器,消息将在服务器端转换为大写,但是如何实现从服务器到客户端的传输文件,并从客户端上传文件到服务器.以下代码是我所得到的. TCP ...

  3. WinForm制作文件传输助手,Tcp局域网传输文件,传输速度受限于宽带和硬盘速度上限

    先看看传输使用界面的效果,可以选择发送和接收. 需要同一局域网的电脑先选择IP(IP能自动读取到)开启接收,注意这里需要自己更改一下文件名和存储格式,也可以不改传完再改,然后另一台电脑选择文件发送,之 ...

  4. Python网络编程——使用TCP方式传输文件

    TCP文件下载器 客户端 需求:输入要下载的文件名,从服务器端将文件拷贝到本地 步骤: 1.创建TCP套接字,绑定端口 2.连接服务端 3.输入要下载的文件名 4.将文件名编码,并发送到服务端 5.接 ...

  5. PC机之间串口通信传输文件

    参考资料 本文内容:本文主要介绍如何实现两电脑之间的串口通信.将两台笔记本电脑,借助 usb转TTL 模块和杜邦线,建立起串口连接.然后用串口助手等工具软件(带文件传输功能)将一台笔记本上的一个大文件 ...

  6. C#串口通信—传输文件测试

    说明:该程序可能不具备实用性,仅测试用. 一.使用虚拟串口工具VSPD虚拟两个串口COM1和COM2 二.约定 占一个字节,代码如下: using System; using System.Colle ...

  7. TCP通信Socket编程----传输不同数据类型。

    更新记录]:2021.12.29. TCP通信传输字符串和浮点数. 作业题目说明:"实现基于TCP的socket通信,完成字符串.浮点数据的传输." mine_:我之前是想直接将用 ...

  8. 【传输文件】文件传输协议FTP、SFTP和SCP

    网络通信协议分层 应用层: HTTP(Hypertext Transfer Protocol 超文本传输协议,显示网页) DNS(Domain Name System) FTP(File Transf ...

  9. Linux下基于TCP的简易文件传输(socket编程)

    Linux下基于TCP的简易文件传输(socket编程) OSI和TCP/IP: 关于TCP/IP协议 关于TCP协议 TCP编程的一般步骤[^2] TCP文件传输实现 功能概述 服务器编程 客户端编 ...

  10. 网络编程 UDP通信的过程 TCP通信过程 多线程文件上传

    网络概述 协议 在网络之间传出数据时需要按照指定的标准来传输,标准中规定了数据的格式.大小.传输的方式.传输速率.形成统一规范->按照规范开发的代码->协议(应用层.传输层.网络层.链路层 ...

最新文章

  1. action 和servlet关系
  2. 看,2015阿里巴巴视觉设计人员面临的问题招收学校
  3. AI基础:词嵌入基础和Word2vec
  4. 常见的几种RuntimeException
  5. AndroidJava List与equals的微妙关系,小心掉坑里
  6. torch.backends.cudnn.benchmark--提升卷积神经网络的运行速度
  7. Lolipa魔方财务主题-虚拟主机源码
  8. ubuntu网站收集
  9. Redis基本操作练习
  10. Android onClick()单机监听2种方式
  11. 无法使用SQL login去登陆SQL Server - 'Password did not match'
  12. linux下mysql5.7环境
  13. spss20安装许可证代码_Spss 23软件下载与安装
  14. java 读取读取配置文件
  15. for..in loops iterate over the entire prototype chain
  16. 移动端webscoket连接失败---code1006
  17. CODEVS 2853 方格游戏
  18. 怎样把经纬度坐标转换为空间直角坐标
  19. 家用计算机的普及英语作文,优秀高二英语作文:计算机
  20. ANSYS渡槽槽身动水压力的施加(1)——矩形渡槽

热门文章

  1. 《网页设计心理学》一1.6 你最近是否有过灵光一现?
  2. chrome devTool
  3. 对于vertical-align的学习
  4. AndroidTv开发中常用的adb命令
  5. 编写一个关于浏览器盒子模型的方法
  6. TYVJ 4354 多重背包二进制优化
  7. artTemplate -- 性能卓越的 js 模板引擎
  8. 关于背景色半透明的实现
  9. Android设计模式系列-组合模式
  10. Linux中断技术、门描述符、IDT(中断描述符表)、异常控制技术总结归类