求Java Socket大神帮忙。

csdn_senior_fans 2017-09-16 03:44:38
尊敬的Java Socket大神,您好:
小弟近日在写一个“网络通信传输文件”的功能。
由于是第一次写,初步的方案,小弟定义成了:“在用户的一端向另一端的用户的ServerSocket首先发送一个字符串,然后发送方阻塞读,由这一串字符打开接收方用户的ServerSocket来接收发送方将要发送过来的"待发送文件的字节流"”,“接收方收到刚才发送方发出的字符串后,打开自己的ServerSocket读,并且向发送方回写一个字符串”,发送方接收到回写的字符串后,开始向接收端写出准备好的文件字节流,接收方读取。
这个方案本身是可行的。但是,有一个致命的缺点:
“需要接收方有一个公网IP”。
这个缺点如果不改正的话,会造成写出的作品,到了交付的时候,客户无法低成本使用,最后,开发出的东西,拿不到工程款,不得不将这个作品,束之高阁。。
经过冥思苦想,小弟找到:
可以利用中间的传话服务器,首先发送方发出一个字符串,然后阻塞读,字符串经过传话服务器传话,传给连接在传话服务器的接收端接收字符串并且打开接收端的ServerSocket准备接收发送端接下来要发送的文件字节流。接收端接收到字符串,向传话服务器发送一个解除发送方阻塞读的字符串后,打开自己的ServerSocket阻塞读发送方将要传送过来的字节流。之后,接收方的字符串经过传话服务器,发送方读取并且解除阻塞读,开始向传话服务器发出自己的“待发送文件字节流”的文件字节流数据。传话服务器接收完毕后,向已经阻塞读文件字节流的接收方发出刚刚接收到的文件发出方发出的文件字节流。接收方接收,完成整个需求。
虽然小弟的想法暂时没有什么破绽,但是,小弟原先未做过这个功能。
小弟希望能够得到Java Socket大神帮忙提供一个上述开发需求的例子。
小弟祝愿:
能够帮助小弟的大神,一辈子,永远健康,永远快乐,永远杰出,永远幸福!!
最后,小弟为小弟提出的问题,悬赏90分!!
作为小弟的心诚的表示。
感谢大神的过目!!
小弟,在线等。
...全文
205 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
ajaccio8899 2017-09-17
  • 打赏
  • 举报
回复
请你把你的需求描述清楚些,别人才好帮你。 基于你的很难看懂的描述,我只能给你如下的建议: 你这个需求非常的简单,不需要大牛来帮你。但是,要建立socket,至少一方要能让另一方找到 (不管是发送方还是接收方),也就是至少需要一方有公网IP地址。 如果发送方和接收方都没有公网IP地址,那就需要你说的“中间的传话服务器”,它必须是有公网IP地址的, 然后发送方和接收方都跟它连就可以了。 接下来需要定应用层的通信协议,而不是你说的“一个字符串”,这个协议根据你的需求来定。比如如果只是一个 点对点的传输,并且发送方和接收方是固定的,那么可以由发送方和接收方都向服务器发送你的协议规定的一个 固定字节数(比如8个字节),由里面的内容确定发送方和接收方。然后开始发送和接收,由服务器转发,当然这个 过程里面也需要定协议。具体你自己定吧。

62,626

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧