Socket文件传输过程详解

转载 2015年07月10日 10:24:43

   今天写了一个文件传输工具。但是之前没有写过。就从网上学习了一下。掌握了大致的步骤。 

第一阶段:Socket连接

服务器端(发送文件):首先打开文件【fopen】,用rb方式打开,既可以发送文本文件,也可以发送二进制文件,在无错时初始化套接字socket,即初始化socket库【WSAStartup】,分配socket【socket】,填充服务器的地址,即填充sockaddr_in结构,然后进行绑定【bind】,设置套接字为监听套接字【listen】,接收连接【accept】,至此服务器阻塞,等待客户端的连接。

         客户端(接收文件):首先打开文件【fopen】,用wb方式打开,在无错时初始化套接字socket,即初始化socket库【WSAStartup】,分配socket【socket】,填充客户端的地址,即填充sockaddr_in结构,然后进行绑定【bind】,再填充服务器的地址结构,然后调用【connect】进行连接,当连接成功后,的工作便结束了。

    第二阶段:文件发送。

    服务器端:使用循环while,结束条件是(!feof(fp)),fp是文件指针,feof检测当前的文件读取指针是否到达文件尾部,若到达了就返回真,否则返回假。然后在循环内部依次调用【fread】、【send】进行发送。这里有一个问题需要注意,调用fread的时候有两个参数是要每次读多少字节和读多少次,将第一个设置为1,将第二个设置为缓冲区的大小,用一个变量记录实际读到多少字节,即【fread】的返回值,然后将其传递给【send】,就可以实现发送文件了,在发送完成后断开连接【closesocket】,关闭文件【fclose】。

    客户端:使用while死循环,调用【recv】接收文件,【fwrite】写入文件,这里也有个和上面类似的问题,就是要将recv的返回值传递给fwrite的第三个参数,即受到了多少字节,就向文件中写多少字节。当recv返回值为0时(连接断开时)退出循环,【closesocket】关闭套接字,调用【fclose】关闭文件。

Java Socket实现文件传输示例代码

这篇文章主要介绍了Java Socket实现文件传输示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 最近学Socket学上瘾了,就写了一个简单的文件传输...
  • maguanghui_2012
  • maguanghui_2012
  • 2017年02月07日 14:00
  • 1921

使用Java的Socket套接字实现echo和大文件传输

初学Java的socket,简单地实现了echo功能,用socket实现局域网内部大文件的快速传输,鉴于socket的简单性,没有用nio。服务器和客户端连接成功后,echo功能将服务器接收到的数据行...
  • qq_23139437
  • qq_23139437
  • 2015年04月15日 18:08
  • 1537

Linux网络编程之socket文件传输示例

本文所述示例程序是基于Linux平台的socket网络编程,实现文件传输功能。该示例是基于TCP流协议实现的socket网络文件传输程序。采用C语言编写。最终能够实现传输任何格式文件的文件传输程序。 ...
  • xipiaoyouzi
  • xipiaoyouzi
  • 2015年02月02日 11:25
  • 5470

socket文件传输.

  • 2015年05月27日 08:55
  • 14KB
  • 下载

liunx上socket C++编程(可以实现图片、文件传输)

  • 2017年12月02日 18:56
  • 3KB
  • 下载

基于java socket使用tcp udp进行简易控制台命令与文件传输

  • 2017年12月24日 16:29
  • 13KB
  • 下载

非阻塞socket实现android手机与PC的文件传输

  • 2014年10月17日 09:47
  • 893KB
  • 下载

java 异步socket文件传输

  • 2017年03月09日 17:07
  • 2KB
  • 下载

C#文件传输Socket编程

  • 2009年07月17日 16:42
  • 771KB
  • 下载

多线程socket文件传输

  • 2010年08月16日 16:41
  • 2.33MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Socket文件传输过程详解
举报原因:
原因补充:

(最多只允许输入30个字)