美文网首页
java利用Socket在控制台互发信息

java利用Socket在控制台互发信息

作者: Cholechow | 来源:发表于2018-12-14 17:10 被阅读0次

    在上一篇文章里面已经提到过socket的一些基本原理了,这里我就不一一解释了,大家感到疑惑的话可以去我的主页查看

    好了,我们现在进入正题,要想发送信息,肯定得有一个服务器和一个客户端

    首先我们来看服务器端的代码:

    package 网络聊天;

    import java.io.BufferedReader;

    import java.io.InputStreamReader;

    import java.io.PrintWriter;

    import java.net.ServerSocket;

    import java.net.Socket;

    public class L2 {

    public L2(){try{

    ServerSocket ss=new ServerSocket(9999);//设置服务器的端口

    System.out.println("服务器正在监听");

    Socket s=ss.accept();//只有服务器被客户连接之后,才会执行后面的语句

    InputStreamReader isr=new InputStreamReader(s.getInputStream());//接收客户端的数据

    BufferedReader br=new BufferedReader(isr);//存入缓存

    PrintWriter pw=new PrintWriter(s.getOutputStream(),true);//向客户端传数据

    InputStreamReader isr2=new InputStreamReader(System.in);//向客户端发送的数据是啥,由控制台输入

    BufferedReader br2=new BufferedReader(isr2);//将控制台输入的数据放入缓存

    while(true){

    String xinxi=br.readLine();//把缓存的数据读出来

    System.out.println("客户端说:"+xinxi);//打印出来

    System.out.println("我说:");

    String fasong=br2.readLine();//把缓存的数据读出来

    pw.println(fasong);//传给客户端

    }

    }catch(Exception e){

    }}

    public static void main(String args[]){

    L2 a=new L2();

    }

    }

    注释比较全面,笔者就不过多解释啦

    然后是客户端的代码:

    package 网络聊天;

    import java.io.BufferedReader;

    import java.io.InputStream;

    import java.io.InputStreamReader;

    import java.io.PrintWriter;

    import java.net.Socket;

    public class L2_1 {

    public static void main(String[] args){

    L2_1 a=new L2_1();

    }

    public L2_1(){

    try{

    Socket s=new Socket("127.0.0.1",9999);//进入端口,前面是服务器的Ip,自己电脑一般是127.0.0.1,后面的是端口,与服务器对应

    PrintWriter pw=new PrintWriter(s.getOutputStream(),true);//IO流发送

    InputStreamReader isr=new InputStreamReader(System.in);//从控制台输入数据

    BufferedReader br=new BufferedReader(isr);//存入缓存区

    InputStream isr2=s.getInputStream();//读取数据

    BufferedReader br2=new BufferedReader(new InputStreamReader(isr2));//存到缓存区

    while(true){

    System.out.println("我发言: ");

    String fasong=br.readLine();//获取数据

    pw.println(fasong);

    String jieshou=br2.readLine();

    System.out.println("服务器说:"+jieshou);//输出数据

    }

    }catch(Exception e){

    }

    }

    }

    这样一个基本的架构我们就已经弄好啦!

    然后就开始来验证我们的功能啦

    首先我们运行服务器的代码,将服务器建立起来,控制台输出如下:

    这个就表示已经启动成功啦

    ps: 当我们运行客服端代码的时候,控制台会切换到客户端去,这个时候想看服务器的控制台点击红色箭头指示下拉箭头就可以啦!

    然后我们运行客户端的代码,与其进行连接,控制台输出如下:

    这个时候我们在控制台输入我们想说的话,回车,然后切换到服务器的控制台:

    可以看到我们说的话已经传到服务器啦,这个时候我们再在服务器控制台输入我们想说的话,回车,然后切换到客户端的控制台:

    可以看到服务器的话客户端也收到啦,这就说明我们已经成功了

    好啦,这次就到这里啦,有问题可以和我留言哦!

    邮箱:2321591758@qq.com

    其他博客的链接:

    Github个人网站    知乎    简书

    欢迎各位访问哦,这次就到这里啦!

    相关文章

      网友评论

          本文标题:java利用Socket在控制台互发信息

          本文链接:https://www.haomeiwen.com/subject/vgwghqtx.html