首页 新闻 搜索 专区 学院

java socket

0
悬赏园豆:10 [已解决问题] 解决于 2014-05-22 14:47

   //1.建立客户端的Socket连接,指定服务器的地址和端口
   Socket socket=new Socket("localhost",80);
   //2.得到Socket的读写流
   OutputStream os=socket.getOutputStream();
   PrintWriter pw=new PrintWriter(os);
   //3.利用流按照一定的协议对Socket进行读/写操作
   String info="用户名:tom 密码:123456";
   pw.write(info);
   pw.flush();
   //省略部分代码

java中建立socket的过程,获取的socket的读写流os,经过包装成为pw,pw写数据,怎么会写到socket中去呢?不是很理解,求解惑。我原来使用vb开发,vb直接是事件驱动的程序,直接在事件里面可以读写数据,java的这个不是很懂。

徒徒的实验室的主页 徒徒的实验室 | 初学一级 | 园豆:193
提问于:2013-08-04 22:32
< >
分享
最佳答案
0

PrintWriter是一个包装流,包装流的功能是将普通的流变成功能更强大的流,包装流里面传入的参数就是普通流

OutputStream os=socket.getOutputStream();这一句是得到socket的输出流。

PrintWriter pw=new PrintWriter(os);这一句是将socket的输出流os包装到pw流中,此时os就变成了PrintWriter类型的另一种流pw,包装之后的socket输出流就获得了PrintWriter的功能,能调用PrintWriter提供的方法了,这样socket的输出流就具备了原来不具备的功能,也就是说功能增强了,就你的例子而言,os的类型是OutputStream,它并不支持写入字符串,但是你进行包装之后,他的类型就变成了PrintWriter,也就可以写入字符串了。其实这之间就是一个类型转换的过程,实际的流本质没有变,只是被包装了一下,转变了一下流的类型。所以你写入的从本质上看就是Socket输出流。

收获园豆:10
倚天剑雨 | 菜鸟二级 |园豆:212 | 2014-05-22 14:45
其他回答(1)
0

因为有Socket连接,端口当然写在里面

若雪封尘 | 园豆:463 (菜鸟二级) | 2013-08-12 15:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册