理解Socket通信中的Input和Output
2012-11-16 06:56
309 查看
Socket通信中的Input、Output。
Client端,也就是发出请求的一端有一个Socket对象;Server端,即处理请求的一端也有一个Socket对象。
--Client端--
Socket对象的InputStream,可以理解为Client端的收件箱,Server端传来的信息会进入Client端Socket的InputStream中(进入Client端的收件箱)。当我们使用网络邮箱去检查收件箱时,其实完全的步骤是:
1.点击收件箱;
2.邮箱页面通过浏览器(客户端)向服务器发送查看收件箱的请求(也可以理解为从服务器端获取最新的信件);
3.服务器接收到请求,将信件(消息)传给浏览器(客户端);
4.客户端从收件箱中读出信件,并展示在屏幕上。
将上述步骤对应到程序代码上,再看:
Socket对象的OutputStream,可以理解为Client端的发件箱,你只需将要发出去的消息写到OutputStream中(放入发件箱),该消息就会被传送至服务器端。
这里需要注意的一点,当创建连接时,需要设置一下URLConnection的setDoOutput(true)。如果不设置这个参数,默认情况下客户端是不能发送消息(url请求不算在内)到服务器端的。
--Server端--
Server端的Socket就简单多了,同上,Server端的InputStream也即Server端的收件箱,Client端发来的消息会被放在Server端Socket的InputStream里。而Server端Socket的OutputStream是用来将消息发送出去的。
总结:
Client端创建连接,并发出请求给Server端;
Server端从自己的InputStream中收到请求的具体内容,做一些具体的处理工作;
Server端将处理好的数据放入自己的OutputStream;
Client端从自己的InputStream读出Server端发过来的数据。
============================
Server端将数据放入自己的OutputStream中,数据可以被Client从自己的InputStream中取出来;
Client端将数据放入自己的OutputStream中,数据可以被Server从自己的InputStream中取出来。
就这么简单。
本文出自 “BitterJava” 博客,请务必保留此出处http://rickqin.blog.51cto.com/1096449/1061087
Client端,也就是发出请求的一端有一个Socket对象;Server端,即处理请求的一端也有一个Socket对象。
--Client端--
Socket对象的InputStream,可以理解为Client端的收件箱,Server端传来的信息会进入Client端Socket的InputStream中(进入Client端的收件箱)。当我们使用网络邮箱去检查收件箱时,其实完全的步骤是:
1.点击收件箱;
2.邮箱页面通过浏览器(客户端)向服务器发送查看收件箱的请求(也可以理解为从服务器端获取最新的信件);
3.服务器接收到请求,将信件(消息)传给浏览器(客户端);
4.客户端从收件箱中读出信件,并展示在屏幕上。
将上述步骤对应到程序代码上,再看:
//以下代码中的方法和关键字不一定准确,使用时不能直接拷贝粘贴 URL url = new URL("http://mail.163.com/username/inbox"); //地址是瞎编的 URLConnection conn = url.openConnection(); //准备好连接到目标服务器 //...在connect之前,应该根据服务器连接要求设置好HTTP头信息,否则connect之后是无法设置头信息的 conn.connect(); //开启TCP连接,注意,此时只是创建了TCP连接,还没有真正向服务器端发出url请求 InputStream is = conn.getInputStream(); //发出url请求,并获得服务器发回来的信息(如果有,且服务器可以正常响应请求的话) //剩下的部分,就看你自己怎样去操作从服务器获得的InputStream了。比如,将这些stream重新拼成String串,并保存到本地。
Socket对象的OutputStream,可以理解为Client端的发件箱,你只需将要发出去的消息写到OutputStream中(放入发件箱),该消息就会被传送至服务器端。
这里需要注意的一点,当创建连接时,需要设置一下URLConnection的setDoOutput(true)。如果不设置这个参数,默认情况下客户端是不能发送消息(url请求不算在内)到服务器端的。
--Server端--
Server端的Socket就简单多了,同上,Server端的InputStream也即Server端的收件箱,Client端发来的消息会被放在Server端Socket的InputStream里。而Server端Socket的OutputStream是用来将消息发送出去的。
总结:
Client端创建连接,并发出请求给Server端;
Server端从自己的InputStream中收到请求的具体内容,做一些具体的处理工作;
Server端将处理好的数据放入自己的OutputStream;
Client端从自己的InputStream读出Server端发过来的数据。
============================
Server端将数据放入自己的OutputStream中,数据可以被Client从自己的InputStream中取出来;
Client端将数据放入自己的OutputStream中,数据可以被Server从自己的InputStream中取出来。
就这么简单。
本文出自 “BitterJava” 博客,请务必保留此出处http://rickqin.blog.51cto.com/1096449/1061087
相关文章推荐
- socket编程的理解-------解决不同主机上进程之间的通信
- http socket 等通信协议相关基知识理解
- 对Socket通信、TCP/IP和Http的理解
- java通信一:Socket通信原理简单理解
- 对input_delay和output_delay的理解
- 对报告描述符里主项目input和output的理解(原)
- 对socket通信的理解
- 关于socket通信UDP,TCP的理解
- 对Socket的理解,Socket使用TCP/IP如何实现通信
- Java关于output Or input理解?
- 黑马程序员---有关Socket间的通信过程理解
- java通信一:Socket通信原理简单理解
- 关于socket通信的理解,socket连接通过IP+端口号的方式,那么如果两个服务器端的应用在同一台机器上,并且位于同一个tomcat容器下,那么岂不是两个服务器都收到了客户端发送的信息
- 彻底理解Java IO中input和output
- 理解input、output、forward与禁止ping
- Socket通信原理简单理解
- php socket通信中stream_select方法的理解
- ACE的SOCKET通信:handle_input 函数的返回值不能随便写!
- 深入理解socket网络异常
- socket通信之read阻塞