12.5-全栈Java笔记:Java网络编程(三)-创新互联

上节回顾:在学习了Socket在建立客户端和服务器单项通讯中,分别创建独立的Socket,并通过Socket的属性。

创新互联是一家集网站建设,开阳企业网站建设,开阳品牌网站建设,网站定制,开阳网站建设报价,网络营销,网络优化,开阳网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

那么如何将两个Socket进行连接,从而达到客户端和服务器之间建立输入输出流进行通信呢?在上节中我们已经讲到,TCP/IP套接字是最可靠的双向流协议,使用TCP/IP可以发送任意数量的数据。如果发送方和接收方计算机确定好端口,他们就可以通信了,其中的端口用套接字表示。

【示例1】客户端与服务器端双向交流的Socket之服务器端

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.ServerSocket;

import java.net.Socket;

public class Server {

    public static void main(String[] args) throws  Exception {

       ServerSocket server=new ServerSocket(8888);

       Socket socket=server.accept();

      BufferedReader in=new BufferedReader(new  InputStreamReader(socket.getInputStream()));

      BufferedWriter out=new BufferedWriter(new  OutputStreamWriter(socket.getOutputStream()));

      BufferedReader br = new BufferedReader(new  InputStreamReader(System.in));

       while(true){

          String str=in.readLine();

          System.out.println("客户端说:"+str);

          String str2 = "";

          str2 = br.readLine();    //读到为止,因此一定要输入换行符!

          out.write(str2+"\n");

          out.flush();

           if(str.equals("end"))

              break;

          }

      in.close();

      out.close();

      socket.close();

   }

}

【示例2】客户端与服务器端双向交流的Socket之客户端

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.InetAddress;

import java.net.Socket;

import java.net.UnknownHostException;

public class Client {

    static Socket server;

    public static void main(String[] args) {

       try {

           server = new Socket(InetAddress.getLocalHost(),  8888);

          BufferedReader in = new BufferedReader(new  InputStreamReader(

                  server.getInputStream()));

          BufferedWriter out = new BufferedWriter(new  OutputStreamWriter(

                  server.getOutputStream()));

          BufferedReader wt = new BufferedReader(new  InputStreamReader(

                 System.in));

           while (true) {

             String str = wt.readLine();

             out.write(str + "\n");

             out.flush();

              if (str.equals("end")) {

                  break;

             }

             System.out.println("服务器发说:" +  in.readLine());

          }

          out.close();

          in.close();

          wt.close();

           server.close();

      } catch (UnknownHostException e) {

          // TODO Auto-generated catch block

          e.printStackTrace();

      } catch (IOException e) {

          // TODO Auto-generated catch block

          e.printStackTrace();

      }

   }

}

学习以上程序后,会发现我们必须按照安排好的顺序,服务器和客户端一问一答!不够灵活!!那么如何用多线程来实现更加灵活的双向通讯呢?下节我们继续~


「全栈Java笔记」是一部能帮大家从零到一成长为全栈Java工程师系列笔记。笔者江湖人称 Mr. G,10年Java研发经验,曾在神州数码、航天院某所研发中心从事软件设计及研发工作,从小白逐渐做到工程师、高级工程师、架构师。精通Java平台软件开发,精通JAVAEE,熟悉各种流行开发框架。

 笔记包含从浅入深的六大部分:

 A-Java入门阶段

 B-数据库从入门到精通

 C-手刃移动前端和Web前端

 D-J2EE从了解到实战

 E-Java高级框架精解

 F-Linux和Hadoop

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文题目:12.5-全栈Java笔记:Java网络编程(三)-创新互联
分享URL:http://scyanting.com/article/dcggjg.html