精华内容
下载资源
问答
  • MFC Csocket实现点对点文件传输

    热门讨论 2009-05-11 15:10:29
    一个实现点对点文件传输的例子,服务器端和客户端切换方便。。。。
  • 一个使用Winsock控件实现的VB文件传输程序,点对点的文件传输实例,程序窗体支持 拖动,把将要发送的文件拖动到规定区域即可激...
  • 使用Socket实现点对点的文件传输

    千次阅读 2010-04-18 23:14:00
    System.Sockes命名空间了实现 Berkeley 套接字接口。通过这个类,我们可以实现网络计算机之间的消息传输和发送。而在我下面要讨论的这个议题里,我们...在这里,我们实现一个轻量级的方法来实现点对点的文件传输,这样就

    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 = "";
    //目录列举
    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() ;   从上面可以看出接受与发送恰好是互为相反的过程,非常简单。

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

    展开全文
  • 用MFC实现局域网内点对点的大文件传输、这个程序所采用的是基于TCP/IP协议的Winsock编程原理
  • 用Socket实现点对点的文件传输

    千次阅读 2005-02-18 01:57:00
    System.Sockes命名空间了实现 Berkeley 套接字接口。通过这个类,我们可以实现网络计算机之间的消息传输和发送.而在我下面要讨论的这个议题里,我们...在这里,我们实现一个轻量级的方法来实现点对点的文件传输,这样就

    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 
       
              execmdcmdList[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() ;
      
    
      
        
      
    从上面可以看出接受与发送恰好是互为相反的过程,非常简单。
       
    至此,单方向的文件传输就完成了,只需要在每个对等的节点上同时实现上面的发送和接受的处理代码就可以做到互相传输文件了。
       

    展开全文
  • java socket实现点对点文件传输

    热门讨论 2009-08-12 00:14:37
    里面有几个文件还挺有用的,可以参考参考~~~~~~~~~~
  • 点对点视频实时传输

    千次阅读 2017-01-10 11:31:45
    技术:音频audioRecorder采集microphone数据,视频编写AbstractCamera实现类采集camera数据。2、使用localsocket发送视频流。 技术:将自身作为服务器3、音视频编码。 技术:可以直接使用开源强大的ffmpeg编...

    流程:

    1、android音视频采集。
    技术点:音频audioRecorder采集microphone数据,视频编写AbstractCamera实现类采集camera数据。

    2、使用localsocket发送视频流。
    技术点:将自身作为服务器

    3、音视频编码。
    技术点:可以直接使用开源强大的ffmpeg编解码库,视频libx264,音频libfaac 。技术点:ffmpeg在Linux的安装编译,jni调用ffmpeg编译得到的so库。

    4、rtp打包。
    技术点:rtp包格式

    5、udp传输。

    6、创建sdp文件通过vlc播放。

    客户端监听端口事件。播放、停止等;

    展开全文
  • 实现点对点 点对点测试程序 发布到订阅流程图 Created with Raphaël 2.1.2开始消息生产者通过session发送到指定topicbroker根据subscriber的id找出订阅者,并推送消息过去订阅者监听到数据并执...
    • 使用语言:java
    • 消息中间件:activemq
    • 用到工具:git、maven、任意文本编辑器

    目录

    发布到订阅流程图

    Created with Raphaël 2.1.2 开始 消息生产者通过session发送到指定topic broker根据subscriber的id找出订阅者,并推送消息过去 订阅者监听到数据并执行用户定义的操作 结束

    实现点对点

    ok,了解消息在activemq中的传输流程后我们来看看在哪里截取消息并发送到指定的消费者吧。

    1、使用git下载activemq源码
    git clone https://git-wip-us.apache.org/repos/asf/activemq.git
    2、git自动下载最新版本的源码,需要下载和你使用的mq程序对应的版本,上一步的网址中有tag一栏,选择对应的版本进去,查看对应的commit所产生的hashcode
    git reset –hard <对应版本hashcode>
    3、自定义消息到topic后推送给订阅者的消息分发策略
    策略存放路径在项目根路径下的\activemq-broker\src\main\java\org\apache\activemq\broker\region\policy\
    在此目录下随便选一个原有的*Policy.java文件,修改此文件内容
    4、重新编译broker
    在\activemq-broker\下执行mvn package进行打包(打包后的内容应该在target文件夹中)
    把生成的activemq-broker-version.jar拷贝到使用的mq程序的lib目录下
    5、修改activemq的配置文件

    接下来就是实现点对点的重点,自定义分发策略
    1、点对点的实现是通过设置clientId来确定两个点,因为MQTT框架无法设置message的properties属性,所以把clientId放到消息体中,用某个特殊符号隔开,我这里用的是@符号
    2、producer.send(message);发送消息后到达topic中,如果此topic有订阅的消费者,那么才会进入到分发策略,而进入到哪个分发策略是你在第五步配置的\conf\activemq.xml中指定的那个,配置文件更改后就会进入到下面的策略中。
    3、分发策略中定义,必须是在名为.ptp结尾的topic中才会进行点对点推送,不然就和正常的一样一对多的推送

    String msgBody = "message body";
    String clientId = "mqtt-1012";
    producer.send(clientId+"@"+msgBody);
    package org.apache.activemq.broker.region.policy;
    
    import java.util.List;
    
    import org.apache.activemq.broker.region.MessageReference;
    import org.apache.activemq.broker.region.Subscription;
    import org.apache.activemq.command.ActiveMQDestination;
    import org.apache.activemq.filter.MessageEvaluationContext;
    
    public class PriorityDispatchPolicy extends SimpleDispatchPolicy {
    
        public boolean dispatch(MessageReference node, MessageEvaluationContext msgContext, List<Subscription> consumers) throws Exception {
            //指定特定后缀名的topic进入自定义分发策略
            if(!node.getMessage().getDestination().getQualifiedName().endsWith(".ptp"))
                return super.dispatch(node, msgContext, consumers);
    
            String _clientId = "";
            //获取消息内容
            ByteSequence sequence = node.getMessage().getContent();
            byte[] message = sequence.getData();
            String strMessage = new String(message, "utf-8");
    
            //format:clientID@messageBody
            if (!"".equals(strMessage) && strMessage.indexOf("@")>-1) 
                _clientId = strMessage.substring(0, strMessage.indexOf("@"));
            if ("".equals(_clientId))
                return super.dispatch(node, msgContext, consumers);
    
            strMessage = strMessage.substring(strMessage.indexOf("@") + 1, strMessage.length());
            node.getMessage().setContent(new ByteSequence(strMessage.getBytes("utf-8")));
    
            ActiveMQDestination _destination = node.getMessage().getDestination();
    
            int count = 0;
            for (Subscription sub : consumers) {
                // Don't deliver to browsers
                if (sub.getConsumerInfo().isBrowser()) {
                    continue;
                }
                // Only dispatch to interested subscriptions
                if (!sub.matches(node, msgContext)) {
                    sub.unmatched(node);
                    continue;
                }
                if (_clientId != null && _destination.isTopic() && _clientId.equals(sub.getContext().getClientId())
                        && _destination.getQualifiedName().endsWith(".ptp")) {
                    //把消息推送给满足要求的subscription
                    sub.add(node);
                    count++;
                } else {
                    sub.unmatched(node);
                }
            }
    
            return count > 0;
        }
    
    }

    下面展示的是第五步修改的内容,用文本编辑器打开mq程序根目录\conf\activemq.xml文件,寻找到broker标签,修改其中的内容

            <destinationPolicy>
                <policyMap>
                  <policyEntries>
                    <policyEntry topic=">" >
    
                      <dispatchPolicy>
                        <!-- 这里的priorityDispatchPolicy是你选对的策略分发类,首字母小写 -->
                        <priorityDispatchPolicy />
                      </dispatchPolicy>
    
                      <pendingMessageLimitStrategy>
                        <constantPendingMessageLimitStrategy limit="1000"/>
                      </pendingMessageLimitStrategy>
                    </policyEntry>
                  </policyEntries>
                </policyMap>
            </destinationPolicy>

    点对点测试程序

    直接贴代码,不做解释啦

    public class P2PMqttTest {
        public static Connection connection;
        public static Statement stat;
    
        public static void main(String[] args) throws JMSException {
            DefaultMessageListenerContainer container = new DefaultMessageListenerContainer();
            ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("admin", "admin", "tcp://localhost:61616");
            //consumer
            subMsg(factory, "mqtt-1011");
            subMsg(factory, "mqtt-1012");
            subMsg(factory, "aaaaaa");
    
            //product
            sendMsg(factory);
        }
    
        private static void subMsg(ActiveMQConnectionFactory factory, String clientId) throws JMSException {
            Connection connection = factory.createConnection();
            connection.setClientID(clientId);
            connection.start();
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            Topic topic = session.createTopic("channel.ptp");
            MessageConsumer consumer = session.createConsumer(topic);
            consumer.setMessageListener(new ConsumeListenerMessage(clientId));
        }
    
        private static void sendMsg(ActiveMQConnectionFactory factory) throws JMSException {
            Connection connection = factory.createConnection();
            connection.setClientID("mqtt-1022");
            connection.start();
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            Topic topic = session.createTopic("channel.ptp");
            MessageProducer producer = session.createProducer(topic);
            //clientId@messageBody
            Message message = session.createTextMessage("mqtt-1011"+"@"+"test");
            producer.send(message);
        }
    
        static class ConsumeListenerMessage implements MessageListener {
            private String thisClientId;
    
            public void onMessage(Message message) {
                TextMessage msg = (TextMessage) message;
                try {
                    String clientId = msg.getStringProperty("PTP_CLIENTID");
                    String msgBody = msg.getText();
                    System.out.println("============================================");
                    System.out.println(thisClientId+" recive message");
                    System.out.println(msgBody);
                    System.out.println("============================================");
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            }
    
            public ConsumeListenerMessage(String thisClientId) {
                this.thisClientId = thisClientId;
            }
        }
    }
    展开全文
  • MFC实现文件传输

    2014-04-19 09:47:25
    用MFC实现局域网内点对点的大文件传输,内附txt文本文件对代码结构的详细讲述,对需要实现文件传输是个学习案例。
  • SRT公网点对点传输及搭建SRT流媒体服务器

    千次阅读 多人点赞 2020-06-03 16:42:55
    SRT是一种开源传输技术,它是基于UDP协议的,与RTMP不同的是,它具有高码率低延迟的传输特性,加强了...在音视频数据包传输的过程中,SRT会检测并适应两个传输点之间的实时网络状况,有助于补偿由于网络的拥塞而引起的
  • 一个简单的点对点文件传输程序

    千次阅读 2006-04-15 12:45:00
    一个简单的点对点文件传输程序 黄定伍 402431143 在网络飞速发展的...而是用windows socket来实现一个点对点文件传输.你可以把它想像成跟QQ里面的文件传输功能类似,只是我也不知道QQ里面所使用的是FTP或者是
  • HTML5WebSocket实现点对点聊天

    万次阅读 2015-10-07 22:53:04
    昨天使用HTML5的websocket与Tomcat实现了多人聊天,那是最...令人欣慰的是,我用google找到了关于websocket的点对点聊天,更好的是可以和大多数系统很好的配合起来看下效果图 因为是模拟的,这里给出的是两个JSP页
  • FTP文件传输如何用C语言实现 用于文件传输 系统文件更新 急用 点对点
  • java websocket实现点对点即时聊天

    千次阅读 热门讨论 2017-09-15 15:41:06
    3、登录页面,简单的创建一个session会话模拟用户登录用作点对点聊天的唯一标识。     *" pageEncoding="UTF-8"%> String path = request.getContextPath(); String basePath = request.getScheme()...
  • WEB点对点程序传输数据,是用HTTP协议还是TCP/IP协议   Tcp/Ip协议和Http协议有什么区别,两个Web程序点对点传送数据,你会选择那一个?今天在网上看到这样一个面试题目,引发了一连串的查找资料,复习网络知识...
  • 最近传输视频想实现点对点通信,不经过路由器,在网上找了一些资料最后实现了这个程序。程序的功能是,利用iphone和tiny6410实现无限网卡的点对点通信。本文的目的是让大家了解嵌入式linux下无线网卡创建点对点通信...
  • 前言 近期准备学习了一些流媒体的资料.因此找到了来疯直播这个开源项目,研究了段时间,...于是在来疯直播的基础上,自己添加了一个利用tcp点对点推送的代码.. 因为只是个学习demo,所以只用了一些超简单的代码来进行交互.
  • 本文主要介绍了 点对点穿透 和 服务器中转穿透 两种不同途径的内外内网穿透方案,并介绍了SymmeticNAT类型自我鉴定方法以及XTCP点对点内网穿透实现方法。
  • 语音通信是实时通信,一定要保证实时性,不然用户体验会很糟糕。IETF设计了RTP来承载语音等实时性要求很高的数据,...本文先简单讲一下这三个协议(网上好多文章都讲,这里主要讲关键),然后讲软件实现注意。 ...
  • 利用P2P点对点技术实现UDP内网穿透

    千次阅读 2011-05-07 21:04:00
     关于如何穿透内网,实现内网之间的点对点通信,网上资料很多,但参差不齐,有很多人可能看了还是很模糊无法理解,其实做内网穿透不难,难的关键是在于对一些基础知识的理解,其中要涉及一些网络通讯原理的东西。...
  • 点对点和端对端通信

    千次阅读 2017-07-12 15:31:30
    数据传输的可靠性是通过数据链路层和网络层的点对点传输层的端对端保证的。点对点是基于MAC地址或者IP地址,是指一个设备发数据给另外一个设备,这些设备是指直连设备包括网卡,路由器,交换机。端对端是网络连接...
  • UDP如何实现可靠传输

    千次阅读 2019-05-15 18:16:54
    概述 UDP不属于连接协议,具有资源...实现的方式可以参照tcp可靠性传输的方式,只是实现不在传输层,实现转移到了应用层。 最简单的方式是在应用层模仿传输层TCP的可靠性传输。下面不考虑拥塞处理,可靠UDP的简单设...
  • C#下实现文件传输

    千次阅读 2007-05-30 16:16:00
    System.Sockes命名空间了实现 Berkeley 套接字接口。通过这个类,我们可以实现网络计算机之间的消息传输和发送.而在我下面要讨论的这个议题里,我们将...在这里,我们实现一个轻量级的方法来实现点对点的文件传输,这
  • 点对点 与 端对端 的区别

    千次阅读 2016-08-09 11:28:35
    数据传输的可靠性是通过数据链路层和网络层的点对点传输层的端对端保证的。点对点是基于MAC地址或者IP地址,是指一个设备发数据给另外一个设备,这些设备是指直连设备包括网卡,路由器,交换机。端对端是网络连接...
  • LoRa点对点系统10 路往何方

    千次阅读 2016-10-25 16:31:03
    讨论了:LoRa点对点系统的局限性,LoRa+mesh组网的意义,LoRa星型组网的优势。
  • P2P(点到点-点对点)通信实现实例

    万次阅读 2015-11-06 22:22:40
    这是怎么实现的呢? linux_dev_framework软件包中的p2p_server.c及p2p_client.c就是P2P通信的一个实现示例。 linux_dev_framework软件包编译后,生成的程序中,包含p2p_server.exe及p2p_client.exe两个程序。
  • 现在人工智能非常火爆,很多朋友都想学,但是一般的...今天突然看到了WebSocket然后就网上找了一个例子,然后修改了下,实现了简单的聊天室,包括群聊和点对点聊天。 使用的代码如下 jsp代码: <%@ page ...
  • UDP如何实现可靠性传输

    千次阅读 2020-04-17 16:51:17
    1 UDP与TCP的区别 TCP(TransmissionControl Protocol 传输控制协议)是一种面向连接的、...可靠性由上层应用实现,所以要实现udp可靠性传输,必须通过应用层来实现和控制。 2 TCP如何实现可靠性传输? 确认机制、...
  • 自制微信文件传输助手,实现数据安全传输与存储

    千次阅读 多人点赞 2020-10-24 16:12:59
    文章以目的为导向重写fiora开源项目,自制文件传输助手,从而实现数据的安全传输与存储。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 528,399
精华内容 211,359
关键字:

如何实现点对点传输