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

基本方法

要实现套接字的网络通讯,须要分四个步骤完成:网络

  (1)建立套接字Socket,链接成功后造成网络链接通道;socket

  (2)由套接字对象Socket调用getInputStream()或getOutputStream()方法,分别返回具备套接字通讯的基础输入流InputStream和输出流OutputStream对象做为参数,完成绑定套接字通讯的输入流和输出流对象的建立。函数

  (3)用输入和输出流对象调用其对应方法的操做方式实现网络通讯;spa

  (4)网络通讯结束,须要关闭输入流和输出流对象,尤为要关闭套接字对象。code

具体实现方法

  (1)基于套接字的字节输入流dis和输出流dos的建立

     dis调用readUTF()方法接收数据;对象

       dos调用writeUTF()方法发送数据;blog

Socket socket=new Socket("127.0.0.1", 8888);
        try {
            DataInputStream dis=new DataInputStream(socket.getInputStream());
            DataOutputStream dos=new DataOutputStream(socket.getOutputStream());
                   ……
            dos.writeUTF("Cilent Test");
            dos.flush();
            dos.close();
        } catch (Exception e) {
            // TODO: handle exception
        }finally{
            socket.close();
}                    

  (2)基于套接字具备缓冲的字节输入流dinB和输出流dosB的建立

DataInputStream dinB=new DataInputStream(new BufferedInputStream(socket.getInputStream()));
DataOutputStream dosB=new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));

  (3)基于套接字并具备缓冲的字符读取器br和写入器bw或文本输出流pw的建立

      若是以字符为单位的读取器和写入器来实现网络通讯,必须将套接字的字节流用转换器转换为字符流输入,或将字符流装换为套接字的字节流输出。get

      转换器实现以下:it

new InputStreamReader(socket.getInputStream());    //字节输入流转换为字符输入流
new OutputStreamWriter(socket.getOutputStream());  //字符输出流转换为字节输出流

      如下将绑定有套接字的转换器对象做为缓冲字符读取器br和字符写入器bw的构造函数参数,创建br和bw对象,由此可达到字符操做的高效率。io

      创建br和bw对象代码以下:

BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

      若是用字符格式化文本输出流PrintWriter代替写入器bw实现字符输出流,其对象pw构造函数的第一个参数为写入对象便可;第二个参数为true,表示数据写到pw进入缓冲区,系统自动刷新输出缓冲区,由此来确保数据送出。

PrintWriter writer=new PrintWriter(socket.getOutputStream(),true);
相关文章
相关标签/搜索