12.5-全栈Java笔记:Java网络编程(三)
admin
2023-03-17 18:41:08
0

上节回顾:在学习了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();     //读到\n为止,因此一定要输入换行符!

           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 




相关内容

热门资讯

ICC逮捕令致内塔尼亚胡出行受... 【环球网报道】据以色列《新消息报》网站26日报道,由于国际刑事法院(ICC)2024年就以色列在巴勒...
“罗永浩怒斥电视机厂商”戳中了... 7月25日晚,罗永浩发文怒斥当下电视机的产品设计。据都市快报报道,罗永浩表示,他为家中老人换了两次电...
各地各部门坚持人民至上筑牢防汛... 新华社北京7月25日电 题:风雨同舟映初心——各地各部门坚持人民至上筑牢防汛抗洪坚实堤坝新华社记者当...
法院回应LV起诉地产开发商 7月26日,厦门市湖里区人民法院发布情况通报,网传案情“路易威登公司起诉地产开发商,因楼盘外立面四叶...
携程的问题不仅在于垄断,更在于... 国内平台科技企业一般都是通过向B端收费、抽佣获利,尽量给消费者创造一个比较清爽的使用环境。携程算是最...
海信电视用遥控器关闭后打不开 原因可能是遥控器的电池没有装好或者是没电了,需要重新安装一下电池或者更换新的电池试一试;原因可能是电...
电视机突然没电源打不开了 有可能是电视开关的电源线断了;可能是电视在使用时短路;可能是电源插头插座松动;可能是电视内部零件接触...
电热水器下面那个小龙头漏水是怎... 电热水器下面那个小龙头漏水是怎么回事?1、因为安全阀发生了故障或者是已经被损坏了,就会有漏水的现象;...
回答下电脑桌面一片空白怎么恢复 电脑桌面上如果是一片空白,那说明您的电脑图标被隐藏了,想要恢复就要按照如下的三个步骤去操作才行。 第...
澳总理要找特朗普“理论”关税:... 当地时间7月26日,澳大利亚总理阿尔巴尼斯表示,他将直接向美国总统特朗普提出抗议,反对美国新近宣布的...