套接字输入流——InputStream

输入缓冲装置里面必须要包含读取字符的通道,否则就谈不上缓冲了,这个通道就是InputStream,它属于jdk中java.io包的类,有了它我们就可以从源头读取字符,它的来源可以有多种多样,这里主要探讨的是从socket连接中读取字符。

如上图,InputStream充当从操作系统底层读取socket字节的通道,当客户端与服务器端建立起连接后就可以看成存在一条通道供双方传递信息,客户端写入的字符串通过通道传递到服务器端,应用层则通过InputStream读取字节流。应用层最小单位为8位(字节),为方便后续转码处理我们希望获取到原生的字节流,以下代码已很大程度简化且不保证逻辑正确,只为说明客户端传输字节到服务器端的过程。服务器端建立好监听等待客户端发起连接,客户端与服务器端连接起来后通过OutputStream向服务器端写入字节数组,服务器端通过InputStream将客户端传过来的字节数组读取到buffer中,接着就可以往下对buffer进行其他处理,例如解码操作。套接字输入缓冲装置就是通过InputStream将字节读取到缓冲装置,并且提供对http协议的请求行、请求头部等解析方法。其中http协议请求行及头部规定使用ASCII编码,字节刚好与之对应。

①   服务器端:

ServerSocket server = new ServerSocket(8080);

Socket socket = server.accept();

InputStream in = socket.getInputStream();

byte[] buffer = new byte[5];

int i = in.read(buffer);

socket.close();

②   客户端:

Socket client= new Socket("127.0.0.1", 8080);

OutputStream out = client.getOutputStream();

byte[] bytes={1,1,1,1,1};

out.write(bytes);

client.close();

时间: 2024-12-15 11:13:10

套接字输入流——InputStream的相关文章

网络通信中基于套接字输入流和输出流的创建

基本方法 要实现套接字的网络通信,需要分四个步骤完成: (1)创建套接字Socket,连接成功后形成网络连接通道: (2)由套接字对象Socket调用getInputStream()或getOutputStream()方法,分别返回具有套接字通信的基础输入流InputStream和输出流OutputStream对象作为参数,完成绑定套接字通信的输入流和输出流对象的创建. (3)用输入和输出流对象调用其对应方法的操作方式实现网络通信: (4)网络通信结束,需要关闭输入流和输出流对象,尤其要关闭套接

套接字输入缓冲装置——InternalInputBuffer

互联网的世界很复杂,信息从一端传向另一端过程也相当复杂,中间可能通过若干个硬件,为了提高发送和接收效率,在发送端及接收端都将引入缓冲区,所以两端的套接字都拥有各自的缓冲区,当然这种缓冲区的引入也带来了不确定的延时,在发送端一般先将消息写入缓冲区,直到缓冲区填满才发送,而接收端则一次只读取最多不超过缓冲区大小的消息. Tomcat在处理客户端的请求时需要读取客户端的请求数据,它同样需要一个缓冲区用于接收字节流,即套接字输入缓冲装置,它主要的责任是提供一种缓冲模式从socket中读取字节流,提供填充

【急】c#服务器用套接字与android服务端互通训,要双向的,我自己写了一个,不成功,求例子,求指导,急啊

============问题描述============ c#服务端:  //创建监听端口.....  private void StartListening()         {               //创建IPEndPoint             IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("192.16.41.120"), 8897);               //创建Socket实例           s

java套接字(socket)实例

客户端socket 流程: 1.连接远程主机 2.发送数据 3.接收数据 4.关闭流与socket连接 实例: import java.io.*; import java.net.Socket; import java.util.Date; /** * Created by CLY on 2017/7/11. */ public class ClientSocket { public static void main(String[] arg){ int port = 233;//与之连接的服务

Java套接字Socket

这篇博客是本人学习<Java网络程序设计>书中第4章套接字的学习总结.初学者网友学习这篇Java套接字文章,如果难于理解文章前面理论部分,可以先运行后面的程序,边看运行后面的程序边理解前面的原理,这对初学者是最好的方法.所有源代码都在文章后面我的github链接代码中. --惠州学院 13网络工程 吴成兵 20160607 目录 1 目录 1 一 流套接字概述 二 服务器套接字ServerSocket 21 ServerSocket的工程过程 22 ServerSocket构造方法 23 Se

多线程和Socket套接字

一个进程可以有多个线程一个线程至少会有一个进程 extends Thread类implements Runnable接口重写run()方法 启动线程start():1.启动一个线程 2.调用run()方法 区别:继承Thread类 资源不共享 实现Runnable接口 资源共享 还可以继承其他类 创建对象时继承Thread类 直接new对象实现Runnable接口 new Thread(构造参数:Runnable接口实现类对象): --------------------------------

Java 网络编程(五) 使用TCP/IP的套接字(Socket)进行通信

套接字Socket的引入 为了能够方便地开发网络应用软件,由美国伯克利大学在Unix上推出了一种应用程序访问通信协议的操作系统用调用socket(套接字). socket的出现,使程序员可以很方便地访问TCP/IP,从而开发各种网络应用的程序. 随着Unix的应用推广,套接字在编写网络软件中得到了极大的普及.后来,套接字又被引进了Windows等操作系统中.Java语言也引入了套接字编程模型. 什么是Socket? Socket是连接运行在网络上的两个程序间的双向通讯的端点. 使用Socket进

19、网络编程 (Socket套接字编程)

网络模型 *A:网络模型 TCP/IP协议中的四层分别是应用层.传输层.网络层和链路层,每层分别负责不同的通信功能,接下来针对这四层进行详细地讲解. 链路层:链路层是用于定义物理传输通道,通常是对某些网络连接设备的驱动协议,例如针对光纤.网线提供的驱动. 网络层:网络层是整个TCP/IP协议的核心,它主要用于将传输的数据进行分组,将分组数据发送到目标计算机或者网络. 传输层:主要使网络程序进行通信,在进行网络通信时,可以采用TCP协议,也可以采用UDP协议. 应用层:主要负责应用程序的协议,例如

套接字 Socket 和 ServerSocket 讲解和实例

什么是Socket? 网络上两个程序通过一个双向的通信链接实现数据的交换,这个链接的一端称为一个Socket 建立网络连接至少需要一对端口号. Socket 套接字是网络连接的一个端点,套接字使一个应用可以从网络中读取和写入数据,放到不同的计算机上,可以使两个应用通过连接发送和接收字节流,为了让一个应用发送数据到另一个应用,你需要知道另一个应用的IP地址和接口(其实是服务端的域名和接口) public Socket (java.lang.String host, int port) 一旦建立成功