98.TCP通信传输文件
客户端
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通信传输文件相关推荐
- c++语言 tcp例子,C++中TCP通信实现文件传输
作为Computer networks课程的一个project,我们需要实现用TCP在mininet中client和server的相互通信,需要能够传输文本文件,binary file 和image ...
- java如何实现tcp传输图像_如何在java中实现TCP服务器和TCP客户端传输文件
我实现了简单的TCP服务器和TCP客户端类,可以从客户端发送消息到服务器,消息将在服务器端转换为大写,但是如何实现从服务器到客户端的传输文件,并从客户端上传文件到服务器.以下代码是我所得到的. TCP ...
- WinForm制作文件传输助手,Tcp局域网传输文件,传输速度受限于宽带和硬盘速度上限
先看看传输使用界面的效果,可以选择发送和接收. 需要同一局域网的电脑先选择IP(IP能自动读取到)开启接收,注意这里需要自己更改一下文件名和存储格式,也可以不改传完再改,然后另一台电脑选择文件发送,之 ...
- Python网络编程——使用TCP方式传输文件
TCP文件下载器 客户端 需求:输入要下载的文件名,从服务器端将文件拷贝到本地 步骤: 1.创建TCP套接字,绑定端口 2.连接服务端 3.输入要下载的文件名 4.将文件名编码,并发送到服务端 5.接 ...
- PC机之间串口通信传输文件
参考资料 本文内容:本文主要介绍如何实现两电脑之间的串口通信.将两台笔记本电脑,借助 usb转TTL 模块和杜邦线,建立起串口连接.然后用串口助手等工具软件(带文件传输功能)将一台笔记本上的一个大文件 ...
- C#串口通信—传输文件测试
说明:该程序可能不具备实用性,仅测试用. 一.使用虚拟串口工具VSPD虚拟两个串口COM1和COM2 二.约定 占一个字节,代码如下: using System; using System.Colle ...
- TCP通信Socket编程----传输不同数据类型。
更新记录]:2021.12.29. TCP通信传输字符串和浮点数. 作业题目说明:"实现基于TCP的socket通信,完成字符串.浮点数据的传输." mine_:我之前是想直接将用 ...
- 【传输文件】文件传输协议FTP、SFTP和SCP
网络通信协议分层 应用层: HTTP(Hypertext Transfer Protocol 超文本传输协议,显示网页) DNS(Domain Name System) FTP(File Transf ...
- Linux下基于TCP的简易文件传输(socket编程)
Linux下基于TCP的简易文件传输(socket编程) OSI和TCP/IP: 关于TCP/IP协议 关于TCP协议 TCP编程的一般步骤[^2] TCP文件传输实现 功能概述 服务器编程 客户端编 ...
- 网络编程 UDP通信的过程 TCP通信过程 多线程文件上传
网络概述 协议 在网络之间传出数据时需要按照指定的标准来传输,标准中规定了数据的格式.大小.传输的方式.传输速率.形成统一规范->按照规范开发的代码->协议(应用层.传输层.网络层.链路层 ...
最新文章
- action 和servlet关系
- 看,2015阿里巴巴视觉设计人员面临的问题招收学校
- AI基础:词嵌入基础和Word2vec
- 常见的几种RuntimeException
- AndroidJava List与equals的微妙关系,小心掉坑里
- torch.backends.cudnn.benchmark--提升卷积神经网络的运行速度
- Lolipa魔方财务主题-虚拟主机源码
- ubuntu网站收集
- Redis基本操作练习
- Android onClick()单机监听2种方式
- 无法使用SQL login去登陆SQL Server - 'Password did not match'
- linux下mysql5.7环境
- spss20安装许可证代码_Spss 23软件下载与安装
- java 读取读取配置文件
- for..in loops iterate over the entire prototype chain
- 移动端webscoket连接失败---code1006
- CODEVS 2853 方格游戏
- 怎样把经纬度坐标转换为空间直角坐标
- 家用计算机的普及英语作文,优秀高二英语作文:计算机
- ANSYS渡槽槽身动水压力的施加(1)——矩形渡槽