本帖最后由 w270307032 于 2013-6-3 11:53 编辑
关于TCP协议中ServerSocket和Socket的一些疑问
首先,说明的是因为我的疑惑主要是理解上的疑惑,不是代码使用问题,所以就没把具体的代码链接出来,请大家见谅。好了言归正传,
假定,现在我在 客户端建立了个Socket s=new Socket(192.168.3.3, 9090) , 在服务器端建立了个ServerSocket ss=new ServerSocket(9090),
客户端在建立了自己的outputstream后,用outputstream的write方法,往服务端发送了一些数据。服务端用Socket s1=ss.accept() 方法获得了该连接的套接字(我根据API说明和看了毕老师的视频的个人 理解是,其实s1就是s),
然后服务端调用s1.getInputStream()的read方法来进行读取数据。
我的疑惑是 1:如果此时s还没建立自己的InputStream话,那么s1获取的InputStream是哪来的?
2:客户端的数据是通过 s的outputstream进行传输的,那么服务端想读取这些信息的话,如果s1 就是s 的话,那么调用的应该通过InputStream isin=s.getOutputStream()或InputStream isin=s1.getOutputStream()这样来获取才对,
客户端的输出流对应服务端的输入流,为什么服务端InputStream isin=s1.getInputStream()。
所以我想 s1 和s 应该不是同一个才对,那他们又是什么关系?是我哪里理解有问题,或者是说ServerSocket和Socket的底层将流进行了封装的同时,也同时将客户端的输出流和服务端的输入流,用类似管道流的原理进行了连接,还是怎么回事。
PS:屌丝第一次发帖,心情那是相当滴激动,嘿嘿, 求点击,求抢楼,求回复,求指点,求照顾,求加分,当然,如果可以有的话,随便求美女...:lol
外加链接个号外消息:http://bbs.itheima.com/thread-52835-1-1.html |