求Java Socket大神帮忙。
尊敬的Java Socket大神,您好:
小弟近日在写一个“网络通信传输文件”的功能。
由于是第一次写,初步的方案,小弟定义成了:“在用户的一端向另一端的用户的ServerSocket首先发送一个字符串,然后发送方阻塞读,由这一串字符打开接收方用户的ServerSocket来接收发送方将要发送过来的"待发送文件的字节流"”,“接收方收到刚才发送方发出的字符串后,打开自己的ServerSocket读,并且向发送方回写一个字符串”,发送方接收到回写的字符串后,开始向接收端写出准备好的文件字节流,接收方读取。
这个方案本身是可行的。但是,有一个致命的缺点:
“需要接收方有一个公网IP”。
这个缺点如果不改正的话,会造成写出的作品,到了交付的时候,客户无法低成本使用,最后,开发出的东西,拿不到工程款,不得不将这个作品,束之高阁。。
经过冥思苦想,小弟找到:
可以利用中间的传话服务器,首先发送方发出一个字符串,然后阻塞读,字符串经过传话服务器传话,传给连接在传话服务器的接收端接收字符串并且打开接收端的ServerSocket准备接收发送端接下来要发送的文件字节流。接收端接收到字符串,向传话服务器发送一个解除发送方阻塞读的字符串后,打开自己的ServerSocket阻塞读发送方将要传送过来的字节流。之后,接收方的字符串经过传话服务器,发送方读取并且解除阻塞读,开始向传话服务器发出自己的“待发送文件字节流”的文件字节流数据。传话服务器接收完毕后,向已经阻塞读文件字节流的接收方发出刚刚接收到的文件发出方发出的文件字节流。接收方接收,完成整个需求。
虽然小弟的想法暂时没有什么破绽,但是,小弟原先未做过这个功能。
小弟希望能够得到Java Socket大神帮忙提供一个上述开发需求的例子。
小弟祝愿:
能够帮助小弟的大神,一辈子,永远健康,永远快乐,永远杰出,永远幸福!!
最后,小弟为小弟提出的问题,悬赏90分!!
作为小弟的心诚的表示。
感谢大神的过目!!
小弟,在线等。