我写了一个简单的文件传送软件,用在局域网范围内相互发送文件用。如果可以ping通的IP地址这个软件正常工作。
这个软件按照对方IP地址,连接并发送文件。
我现在想实现QQ一样,向任意IP地址传送文件。这个怎么实现呢?
我发现在校园内的两台机器,用QQ发文件是可以的,但无法ping对方,我写的程序也无法连接。
QQ的文件发送功能的工作原理是什么样的呢?希望大家帮帮我我是java新手,刚开始接触java网络编程,谢谢大家。

解决方案 »

  1.   

    下面是一个客户端发送文件数据流的例子,当然,你在另外一台机器就相当于服务器,要写接收文件数据流方法差不多,原理就是一台机socket和另一台serversocket进行连接,然后就可以通过流,想干啥干啥。File file_1 = new File(str_filename);
    FileInputStream fis = new FileInputStream(file_1);
    OutputStream netOut = socket.getOutputStream();
    OutputStream out = new DataOutputStream(new BufferedOutputStream(netOut));
    byte[] buf = new byte[2048];
    int num = fis.read(buf);
    while (num != (-1)) { // 是否读完文件
    out .write(buf, 0, num);// 把文件数据写出网络缓冲区
                    out .flush();// 刷新缓冲区把数据写往客户端
    num = fis.read(buf);// 继续从文件中读取数据
    }
    fis.close();
    out.close();
      

  2.   

    这里有你想要的,想进一步询问,请给分,少于100你好意思嘛?不,你是个要面子的人。!http://topic.csdn.net/u/20081009/13/abd12947-e78e-43ba-9a43-ce690ecb8ac2.html
      

  3.   

    我是校内网,没有公网IP的。我的系的文件传输程序可以在学校内的任何两个IP之间收发文件,但无法向外网发送,也不能接受外网发来的文件。
    QQ是校内网到校外都可以收发文件,QQ的文件发送原理跟我用的Socket套接字连接不一样吗?它是怎么实现的啊?