用Socket实现点对点的文件传输

System.Sockes命名空间了实现 Berkeley 套接字接口。通过这个类,我们可以实现网络计算机之间的消息传输和发送.而在我下面要讨论的这个议题里,我们将讨论的是用套节子实现文件的传输.这种方法有别于FTP协议实现的的文件传输方法,利用ftp的方法需要一个专门的服务器和客户端,无疑于我们要实现的点对点的文件传输太为复杂了一些。在这里,我们实现一个轻量级的方法来实现点对点的文件传输,这样就达到了intenet上任何两个计算机的文件共享。
在两台计算机传输文件之前,必需得先有一台计算机建立套节子连接并绑定一个固定得端口,并在这个端口侦听另外一台计算机的连接请求。
socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
socket.Blocking = true ;
IPEndPoint computernode1 = new IPEndPoint(serverIpadress, 8080);
socket.Bind(computernode1);
socket.Listen(-1);
当有其他的计算机发出连接请求的时候,被请求的计算机将对每一个连接请求分配一个线程,用于处理文件传输和其他服务。
while ( true )
{
clientsock = socket.Accept();
if ( clientsock.Connected )
{
Thread tc = new Thread(new ThreadStart(listenclient));
tc.Start();
}
}

下面的代码展示了listenclient方法是如何处理另外一台计算机发送过来的请求。首先并对发送过来的请求字符串作出判断,看看是何种请求,然后决定相应的处理方法。
void listenclient()
{
Socket sock = clientsock ;
try
{
while ( sock != null )
{
byte[] recs = new byte[32767];
int rcount = sock.Receive(recs,recs.Length,0) ;
string message = System.Text.Encoding.ASCII.GetString(recs) ;
//对message作出处理,解析处请求字符和参数存储在cmdList 中

时间: 2016-01-12

用Socket实现点对点的文件传输的相关文章

文件操作-socket套接字文件传输问题,非文本文档无法传输

问题描述 socket套接字文件传输问题,非文本文档无法传输 Linux下使用套接字文件传输,只能传输文本文件,非文本文件读取时无法完全读入,读了很少一部分就停止读入了,求大神解决! 解决方案 最好有报头和报体,报头存放身份识别和报体长度等信息. 报体如果是二进制流,则需要读取原生二进制,读取长度为报体给出的长度. 所以先定义传输格式再传输,这样不管接收什么样的文件都不会有问题了. 希望能够帮到你.

自己写了一个用java socket通信实现的文件传输,如果我想实现不同局域网之间的传输怎么办?

问题描述 自己写了一个用java socket通信实现的文件传输,如果我想实现不同局域网之间的传输怎么办? 可不可以把自己的电脑搭建成服务器然后把文件传上去,自己电脑的服务器可以使用非web的文件么 解决方案 不同局域网之间通信要路由器交换机支持,进行路由转发.不然不能直接通信 解决方案二: 如果Socket通信的话IP地址必须相同

java socket编程如何测量文件传输速度?

问题描述 java socket编程如何测量文件传输速度? 作业需要,分别写了一个基于tcp和udp的传输文件的程序,想测试两者同时传输时各自的传输速度 请问有什么方法可以实现? 解决方案 发送时发送一个记录客户端时间的包,同时记录好这个包的大小 .服务端在收到这个包后,拆包.取出客户端时间和自己的服务端时间时行差值计算. 然后,接下去就好做了 解决方案二: 类似问题的,http://bbs.csdn.net/topics/391036058,建议参考一下看看 解决方案三: 在发送数据的时候获取

基于socket和javaFX简单文件传输工具_java

本文实例介绍了基于socket和javaFX简单文件传输工具,分享给大家供大家参考,具体内容如下 package application; import java.io.File; import org.james.component.ButtonBox; import org.james.component.FileReceiverGrid; import org.james.component.FileSenderGrid; import javafx.application.Applica

点对点-FTP文件传输如何用C语言实现

问题描述 FTP文件传输如何用C语言实现 FTP文件传输如何用C语言实现 用于文件传输 系统文件更新 急用 点对点 解决方案 1.了解下ftp的原理 基本的指令操作 2.熟悉socket,ftp会有2个socket传输,一个用于指令传输,一个用于数据传输 3.实现基本的ftp传输后,可以考虑文件更新机制,基本的文件读写 解决方案二: 用socket就可以实现呀,ftp只是文件传输协议.你上网搜一下,应该有很多源代码.不要使用封装后的socket,直接使用原始的socket就可以了. 解决方案三:

用socket实现简单的文件传输

'发送端:'By wgscd Dim sendsocket As New Net.Sockets.Socket(Net.Sockets.AddressFamily.InterNetwork, Net.Sockets.SocketType.Stream, Net.Sockets.ProtocolType.Tcp) '实例化socket Dim ipendpiont As New Net.IPEndPoint(Net.IPAddress.Parse("127.0.0.1"), 8888)

C#文件传输

System.Sockes命名空间了实现 Berkeley 套接字接口.通过这个类,我们可以实现网络计算机之间的消息传输和发送.而在我下面要讨论的这个议题里,我们将讨论的是用套节子实现文件的传输.这种方法有别于FTP协议实现的的文件传输方法,利用ftp的方法需要一个专门的服务器和客户端,无疑于我们要实现的点对点的文件传输太为复杂了一些.在这里,我们实现一个轻量级的方法来实现点对点的文件传输,这样就达到了intenet上任何两个计算机的文件共享. 在两台计算机传输文件之前,必需得先有一台计算机建立

使用C#进行点对点通讯和文件传输(通讯基类部分) (From 阿赖的个性空间)

最近一个项目要用到点对点文件传输,俺就到处找资料写程序,最后终于完成了,为了让别人少走些弯路,俺决定将俺程序中最重要的部分贡献出来,希望对大家有所帮助.俺的程序分三部分,包括发送部分.接受部分和一个两者共享的通讯基类,这个基类才是俺心血的结晶:) 一.通讯基类using System;using System.Net.Sockets;using System.Net ;using System.IO ;using System.Windows.Forms;using System.Text; n

socket-java SOCKET 文件传输 有点问题咨询下!

问题描述 java SOCKET 文件传输 有点问题咨询下! 我写的SOCKET 文件传输带MD5校验,客户端总是多写16位的MD5 服务端代码:(在WRITE完以后,还需要WRITE16位的MD5值) while (len <= 8096 && fis.available() > 0) { byte[] src = new byte[8096]; len = fis.read(src); dos.write(src, 0, len); dos.flush(); } dos.w