作者LaPass (LaPass)
看板java
标题Re: [问题] socket写活的
时间Sun Nov 17 01:14:31 2013
※ 引述《dremel (hadoop)》之铭言:
: 小弟初学,已下请教
: 这是我找到的code
: http://ideone.com/9lHhTM FileClient
: http://ideone.com/OmpTun FileServer
: 这支code执行顺序方式:
: (test.jpg在FileClient所属目录)
: 1. java FileServer test.jpg
: 2. java FileClient test.jpg
: 结果:FileClient将档案传到FileServer端
: 我想做的是假设我从资料库查到一笔资料,叫tom.jpg
: 已抓到tom.jpg字串
: 我将tom.jpg存放在字串String tom里面
: 那我要如何让我上面那两只socket code
: 根据我从资料库所找到的tom变数传输tom.jpg档!!!
: 也就是我要将上面两只程式码改成活的!!!
: 问题在於不需要使用者在java执行後面还要加档名
: 而且这两只程式目前再传档案前,
: 都还必须server端执行前加档名(此时连结中)
: >然後client端执行加档名>server端才收到档案。
: 所以我要如何让client端抓到tom变数然後在复制tom.jpg
: 将tom.jpg传到server端??(不需要使用者在执行过程中输入档名)
: 请问要怎麽改写?
: 麻烦大大解惑
方法1: 学FTP的做法
一条连线专门用来下指令的
档名之类的从指令连线去收发
然後当你收到传输档案的指令时,再开另外一条连线去收发档案
方法2: 自订通讯协议
基本上,两边的
socket.getInputStream()
socket.getOutputStream()
是互相对应的,一边的Input送出去的东西另外一边的Output会收到
至於送的是什麽东西,很纯粹的是看你的格式怎麽定
自己订个方法,让另外一边收到那串指令时知道该做什麽事就好了
我比较建议用这种方法
因为花多一点的时间把工具写好後,未来写到网路连线时会比较舒服
方法3: 如果你要交作业的话....
在刚建立连线的时候,你先传一行
test.jpg
过去
我记得 InputStream 跟 OutputStream 有个子类别
是可以用ReadLine Write 之类的方法
先用那个把档名送过去就是了
收到档名之後,再依照范例那样把档案传输过去
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.38.69.229
1F:推 idlejustin:也推第二种写法 11/18 15:56
2F:→ DeathWatch:推2 目前工作传档案就是这样写 11/18 20:20