当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

用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 中

execmd=cmdlist[0];

sender = null ;

sender = new byte[32767];

string parm1 = \"\";

//目录列举

共2页 首页 上一页 1 2 下一页 尾页 跳转到
相关内容
赞助商链接