作为Computer networks课程的一个project,我们需要实现用TCP在mininet中client和server的相互通信,需要能够传输文本文件,binary file 和image file。整个project的目的还是比较明确的。我主要列出了一下几个问题,需要在代码中实现。

1. 实现main函数的接口

因为client和server 需要的参数需要通过命令行输入,所以需要用getoptlong函数来实现。

2. 实现socket programming中的功能

在这个项目中提供了socket programming的接口,按照需要设置即可。

3. 连续send造成的粘包问题

由于TCP拥有优化算法,可以将多个send的数据被一个recv收到,所以造成粘包问题。本项目中会要求先发送文件长度,再发送文件,连续发送造成文件长度和文件粘合在一起,造成无法读出文件。解决办法是加入sleep()函数在两次send之间。这样就能将两次send分开了。

4. 大文件的接收问题

大文件的接受容易由于buffer长度的限制,造成丢失。因此需要设置一个MAX_MESSAGE_SIZE。分成多次完成接收。本来想要在send端也多次发送,效果不好。

5. 文件的读写

由于文件的类型不确定,打开文件都需要用binary格式,读写的时候一定要注意,用read()和write()函数,千万不要<>,因为后一种方式没法确定文件类型。

大概就是这些,因为课程没有结束,暂时就不放代码了,以后补齐。

C++中TCP通信实现文件传输

c++语言 tcp例子,C++中TCP通信实现文件传输相关推荐

  1. 用C#语言在VS2010 WPF中编写的选择文件和选择文件夹的问题及其解决方案

    用C#语言在VS2010 WPF中编写的选择文件和选择文件夹的问题及其解决方案 参考文章: (1)用C#语言在VS2010 WPF中编写的选择文件和选择文件夹的问题及其解决方案 (2)https:// ...

  2. linux下scp提示文件名过长,Linux中crontab下scp文件传输的两种方式

    Linux下文件传输一般有两个命令scp.ftp(工具需要下载安装) 本文主要讲讲scp的文件传输脚本 1.scp ssh-keygen -t rsa免输入密码,传输 这里假设主机A 用来获到主机B的 ...

  3. 在Java中实现SFTP协议文件传输的两种解决方案

    在Java中实现SFTP协议文件传输的两种解决方案 1.1 背景 1.2 关于 FTP /FTPS 1.3 关于SFTP 解决方案一:使用 JSch 库 解决方案二:使用sshj 库 这篇博文来聊聊在 ...

  4. python tcp处理_python中TCP粘包问题解决方案

    TCP协议中的粘包问题 1.粘包现象 基于TCP写一个远程cmd功能 #服务端 importsocketimportsubprocess sever=socket.socket() sever.bin ...

  5. 利用TCP协议完成服务器与客户端之间文件传输

    利用TCP文件传输协议模拟与服务器的文件上传.下载操作,以及进入各种目录和列举当前目录文件状态操作.ls为查看当前目录,cd+目录名进入该目录,cd -则返回上一级目录,dow加文件名则下载文件到本地 ...

  6. SFTP例子2----使用JSch实现SFTP文件传输

    1.JSch开发包下载 http://www.jcraft.com/jsch/ 目前最新版本为:jsch-0.1.51 2.简单例子,列出指定目录下的文件列表 import java.util.Pro ...

  7. sftp api java_SFTP例子2----使用JSch实现SFTP文件传输

    1.JSch开发包下载 目前最新版本为:jsch-0.1.51 2.简单例子,列出指定目录下的文件列表import java.util.Properties; import java.util.Vec ...

  8. c 服务器通信和文件传输,服务器、终端和文件传输方法

    1.一种服务器,其特征在于,包括: 交互单元,用于与终端建立连接,并接收终端发送的文件传输参数,以及将所述文件传输参数发送至指定服务器,以使所述指定服务器根据所述传输参数向所述终端发送文件. 2.根据 ...

  9. 用.net中的socket实现文件传输

    socket是网络套接字,使用它我们可以很方便的实现网络的数据传输.在.net中提供了socket类来帮助开 发者调用socket的使用,从而避免了调用socket的动态库来实现socket的麻烦.下 ...

最新文章

  1. Ubuntu恢复默认的字体
  2. 在线python编程编译器-在线编译或编辑Python的5个最佳工具
  3. python多项式回归_在python中实现多项式回归
  4. Canvas应用绚烂效果-creatjs实现
  5. 机器学习实战(十三)推荐系统(协同过滤 Collaborative Filtering)
  6. 人脸检测(六)--haar分类器代码理解
  7. 10.企业安全建设指南(金融行业安全架构与技术实践) --- 安全预算、总结与汇报
  8. 【Codecs系列】视频格式国际标准:BT601/BT709/BT2020
  9. 三星手机如何通过Exchange账户同步联系人到手机中?
  10. 237. 删除链表中的节点 (Delete Node in a Linked List)
  11. IoU,GIoU,DIoU、CIoU详解
  12. javax.el.PropertyNotFoundException: Property ‘XXX‘ not found on type xx.xx.xx.xx问题解决(el表达式))
  13. Mac下手动安装Tex/Latex Package
  14. Python机器学习05——判别分析
  15. 灵界的科学丨六、星际通信新科技──寻找外星人
  16. 计算机组装职高必背,(完整word版)职高计算机组装与维护教案.doc
  17. 终于有人将TWI(串行通讯接口)给讲通了!
  18. 深度详解什么是SaaS(软件即服务)
  19. php报错 Function name must be a string in xxxx解决
  20. win7 资源管理器打开ftp显示乱码

热门文章

  1. python记忆式键入_Python基础
  2. aop的实现原理_非Spring管理Bean如何添加AOP呢?
  3. python中deepcopy函数_Python学习笔记函数之copy()和deepcopy()
  4. linux远程windows执行cmd,Linux服务器远程连接window服务器并执行cmd命令
  5. 安装linux必不可少的一个分区,安装linux系统对硬盘分区时,必须有的两种分区类型是什么?...
  6. USB外接摄像头不能用怎么办
  7. android app没有读写权限设置,Android 6.0以上权限拒绝打开权限设置界面的解决方法...
  8. SpringMVC接收哪些类型参数参数
  9. ajax调用java程序,从微信小程序到鸿蒙JS开发-JS调用Java
  10. 现在学html4,HTML学习心得(4)