怎样用socket实现点对点的文件传输

2024-05-11 12:23

1. 怎样用socket实现点对点的文件传输

在两台计算机传输文件之前,必需得先有一台计算机建立套接字连接并绑定一个固定得端口,并在这个端口侦听另外一台计算机的连接请求。

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 中
execmd=cmdList[0];
sender = null ;
sender = new Byte[32767];

string parm1 = "";
//目录列举 
if ( execmd == "LISTING" ) 
{
ListFiles(message);
continue ;
} 
//文件传输
if ( execmd == "GETOK" )
{
cmd = "BEGINSEND " + filepath + " " + filesize ;
sender = new Byte[1024];
sender = Encoding.ASCII.GetBytes(cmd);
sock.Send(sender, sender.Length , 0 );
//转到文件下载处理
DownloadingFile(sock);
continue ;
} 
}
}
catch(Exception Se)
{
string s = Se.Message;
Console.WriteLine(s);
}
}

至此,基本的工作已经完成了,下面我们看看如何处理文件传输的。
while(rdby < total && nfs.CanWrite)
{
//从要传输的文件读取指定长度的数据
len =fin.Read(buffed,0,buffed.Length) ;
//将读取的数据发送到对应的计算机
nfs.Write(buffed, 0,len);
//增加已经发送的长度
rdby=rdby+len ; 
}    
从上面的代码可以看出是完成文件转换成FileStream 流,然后通过NetworkStream绑定对应的套节子,最后调用他的write方法发送到对应的计算机。

我们再看看接受端是如何接受传输过来的流,并且转换成文件的:

NetworkStream nfs = new NetworkStream(sock) ;
try
{
//一直循环直到指定的文件长度
while(rby < size)
{
byte[] buffer = new byte[1024] ;
//读取发送过来的文件流
int i = nfs.Read(buffer,0,buffer.Length) ;
fout.Write(buffer,0,(int)i) ;
rby=rby+i ;
} 
fout.Close() ;    
从上面可以看出接受与发送恰好是互为相反的过程,非常简单。

至此,单方向的文件传输就完成了,只需要在每个对等的节点上同时实现上面的发送和接受的处理代码就可以做到互相传输文件了。

怎样用socket实现点对点的文件传输

2. 如何在win7设置点对点网络并共享文件

 ①以管理员身份登录win7系统,依次打开【控制面板】—【网络和共享中心】—【更改高级共享设置}。选中以下四项【启用网络发现】【启用文件和打印机共享】【启用公用文件夹共享】和【关闭密码保护共享】。建议也启用流媒体共享,在家庭或工作栏目下选中【允许windows管理家庭组连接】。  ②右键点击需要共享的文件夹,选择【属性】—【共享】—【高级共享】,选中【共享此文件夹】,点击应用,确定后关闭。(注:上一级文件夹如果已共享,其下面的子文件夹也同时被共享。)
  ③要将文件夹的安全权限改为【允许任何人访问】。右键点击共享文件夹,依次选择【属性】—【安全】—【编辑】—【添加】,输入“everyone”,点确定。在权限框中选中要赋予的权限,如:“完全控制“、“更改”和“读取”。

3. 如何让局域网内用户实现点对点互传文件

点对点这个概念本来就是在广域网里提出的,用在内网不合适。要想实现特定用户的文件传送,设置专用的共享文件夹,赋于特定的用户权限就可以了。

如何让局域网内用户实现点对点互传文件

4. 怎么设置,USB传输文件

您好:
根据您的描述,由于您没有提供具体的型号信息,如果您是三星手机需要连接电脑传输数据,您可参考以下操作:步骤 1. 下载并安装Kies软件如果您的电脑中未安装Kies软件,有可能会因缺少手机驱动导致无法连接,请点击:http://www.samsung.com/cn/support/usefulsoftware/KIES/JSP下载安装Kies同步软件,安装完毕后,不用打开此软件。步骤 2. 手机与电脑连接1.将数据线直接和手机与电脑连接上,手机无需做任何操作。2.手机与电脑连接成功后,电脑桌面上会弹出新的可移动磁盘,点击【打开设备以查看文件】。(如没有弹出,您可以进入我的电脑中,找到带有该手机型号的移动设备盘符,双击打开。)3.打开后会出现2个盘符,分别为“Phone”(内置硬盘)和“Card”(外置SD卡)。(注:若此时您的手机未安装SD卡,则只显示“Phone”。)4.点击一个盘符,这里以打开【Phone】盘符为例,即可查看文件。若上述操作后仍无法连接电脑,建议:1.检查电脑中Windows Media Player是否安装,检查电脑中Windows Media Player版本是否在11以上,若版本较低,建议下载最新版本软件。2.断开手机与电脑的连接,打开Kies软件,点击【解决连接故障】,重装驱动尝试。3.更换电脑USB接口,台式机建议用主机后面的USB端口。4.关闭电脑中的杀毒软件或防火墙尝试。5.有可能跟电脑系统兼容程序有关,也可更换其他电脑尝试连接。
欢迎您访问三星数字服务平台:http://support.samsung.com.cn/ask

5. 如何使用Socket实现点对点文件传输

主要是你通过socket api封装要发送的数据,内部会自动封装成数据流进行传输。 1,什么是Socket 网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket。Socket通常用来实现客户方和服务方的连接。

如何使用Socket实现点对点文件传输

6. 笔记本和台机(操作系统是win7)怎样实现wifi点对点传输文件?

首先回答你第2个问题:wifi direct。
这就是一个Wifi的点对点传输的一个标准或称为协议,具体可以见“wifi direct”的百度百科介绍。
其次,你所描述的这两台机器进行点对点连接,可以先将台式机的这个无线网卡模拟成无线AP,然后笔记本就可以找到这个设备,经过连接设置(类似连接无限路由器的设置)就可以实现与台式机连接,然后设置共享或设置家庭组网络模式就可以实现数据传输。如何设置无线网卡为AP,具体要参照你无线网卡的使用说明书,不同品牌的差异非常大。无法提供明确的说明。

7. 大文件点对点传输用什么方法比较快

纳米盘
rayfile
QQ网络硬盘都可以

如果你和需要你的文件的人距离近的话
直接QQ对传也是可以的~~

大文件点对点传输用什么方法比较快

8. web页面有没有办法实现点对点文件传输

当一个用户开始发送时,提示另一个用户接收。然后为他们做一个中转,也就是读出那边传过来的,再发出去。
最新文章
热门文章
推荐阅读