//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的这个不是很懂。
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输出流。
因为有Socket连接,端口当然写在里面