理解Socket通信中的Input和Output

简介:

Socket通信中的Input、Output。

Client端,也就是发出请求的一端有一个Socket对象;Server端,即处理请求的一端也有一个Socket对象。

--Client端--

Socket对象的InputStream,可以理解为Client端的收件箱,Server端传来的信息会进入Client端Socket的InputStream中(进入Client端的收件箱)。当我们使用网络邮箱去检查收件箱时,其实完全的步骤是:

1.点击收件箱;

2.邮箱页面通过浏览器(客户端)向服务器发送查看收件箱的请求(也可以理解为从服务器端获取最新的信件);

3.服务器接收请求,将信件(消息)传给浏览器(客户端);

4.客户端从收件箱中读出信件,并展示在屏幕上。

将上述步骤对应到程序代码上,再看:

 
  1. //以下代码中的方法和关键字不一定准确,使用时不能直接拷贝粘贴  
  2. URL url = new URL("http://mail.163.com/username/inbox"); //地址是瞎编的  
  3. URLConnection conn = url.openConnection(); //准备好连接到目标服务器  
  4. //...在connect之前,应该根据服务器连接要求设置好HTTP头信息,否则connect之后是无法设置头信息的  
  5. conn.connect(); //开启TCP连接,注意,此时只是创建了TCP连接,还没有真正向服务器端发出url请求  
  6. InputStream is = conn.getInputStream(); //发出url请求,并获得服务器发回来的信息(如果有,且服务器可以正常响应请求的话)  
  7. //剩下的部分,就看你自己怎样去操作从服务器获得的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中取出来。

就这么简单。


本文转自 rickqin 51CTO博客,原文链接:http://blog.51cto.com/rickqin/1061087


目录
打赏
0
0
0
0
344
分享
相关文章
Socket通信之网络协议基本原理
【10月更文挑战第10天】网络协议定义了机器间通信的标准格式,确保信息准确无损地传输。主要分为两种模型:OSI七层模型与TCP/IP模型。
Socket通信之网络协议基本原理
【9月更文挑战第14天】网络协议是机器间交流的约定格式,确保信息准确传达。主要模型有OSI七层与TCP/IP模型,通过分层简化复杂网络环境。IP地址全局定位设备,MAC地址则在本地网络中定位。网络分层后,数据包层层封装,经由不同层次协议处理,最终通过Socket系统调用在应用层解析和响应。
网络编程:基于socket的TCP/IP通信。
网络编程:基于socket的TCP/IP通信。
346 0
|
7月前
|
python socket 简单通信
python socket 简单通信
72 1
Java面试题:简述Java Socket编程的基本流程,包括客户端和服务器的创建与通信。
Java面试题:简述Java Socket编程的基本流程,包括客户端和服务器的创建与通信。
129 0
深入了解Java中的网络编程与Socket通信
深入了解Java中的网络编程与Socket通信
Java网络编程基础与Socket通信实战
Java网络编程基础与Socket通信实战
深入了解Java中的网络编程与Socket通信
深入了解Java中的网络编程与Socket通信
Java网络编程基础与Socket通信实战
Java网络编程基础与Socket通信实战
深入探索Java BIO与NIO输入输出模型:基于文件复制和socket通信
深入探索Java BIO与NIO输入输出模型:基于文件复制和socket通信
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等