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】关闭文件。

相关文章推荐

socket文件传输.

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

socket文件传输功能的实现

这节我们来完成 socket 文件传输程序,这是一个非常实用的例子。要实现的功能为:client 从 server 下载一个文件并保存到本地。 编写这个程序需要注意两个问题: 1) 文件大小不...
  • aasmfox
  • aasmfox
  • 2017年04月29日 11:25
  • 812

socket文件传输源码

  • 2004年07月13日 00:00
  • 39KB
  • 下载

Socket文件传输源码

  • 2008年09月09日 19:48
  • 135KB
  • 下载

java实现socket文件传输

事实上网络编程简单的理解就是两台计算机相互通讯数据而已.对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了.Java SDK提供一些相对简单的Api来完成这些工作.Socket...

SOCKET文件传输

  • 2008年03月09日 15:13
  • 20KB
  • 下载

socket文件传输

  • 2012年05月27日 23:43
  • 8KB
  • 下载

羊皮书APP(Android版)开发系列(十二)Android Socket UDP大文件传输

业务需求是:通过电脑端(网页或客户端形式)发送文件到Android的客户端,下面是使用UDP实现的一个简单的文件传输Demo,因UDP为不可靠传输,可能会丢包。服务器端发送本地文件,代码如下: pac...

Android Socket 文件传输

  • 2016年11月18日 10:43
  • 203KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Socket文件传输过程详解
举报原因:
原因补充:

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