微信号:javalearns

介绍:Java学习网免费提供java语言学习知识分享,我们的宗旨是"免费学习Java,成就人生梦想"!

Java通过Socket实现TCP编程,实现用户登录之服务器相应客户端,客户端和服务端之间的通信

2018-10-10 09:17 javalearns.com

服务器端:

  1.创建ServerSocket对象,绑定监听端口;

  2.通过accept()方法监听客户端请求;

  3.建立连接后通过输入流读取客户端发送的请求信息;

  4.通过输出流向客户端发送响应信息;


package com.wxd.socket;import java.io.*;import java.net.ServerSocket;import java.net.Socket;/**
 * 基于TCP协议的Socket通信,实现用户登录,服务端 */public class Server {    public static void main(String[] args) {        try {            //服务端            //1、创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口
            ServerSocket serverSocket =new ServerSocket(10086);//1024-65535的某个端口            //2、调用accept()方法开始监听,等待客户端的连接
            Socket socket = serverSocket.accept();            //3、获取输入流,并读取客户端信息
            InputStream is = socket.getInputStream();
            InputStreamReader isr =new InputStreamReader(is);
            BufferedReader br =new BufferedReader(isr);
            String info =null;            while((info=br.readLine())!=null){
                System.out.println("我是服务器,客户端说:"+info);
            }
            socket.shutdownInput();//关闭输入流            //4、获取输出流,响应客户端的请求
            OutputStream os = socket.getOutputStream();
            PrintWriter pw = new PrintWriter(os);
            pw.write("欢迎您!");
            pw.flush();            //5、关闭资源            pw.close();
            os.close();
            br.close();
            isr.close();
            is.close();
            socket.close();
            serverSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

控制台输出:

    我是服务器,客户端说:用户名:admin;密码:123

 

客户端:

  1.创建socket对象,指明需要连接的服务器地址和端口号;

  2.建立连接后,通过输出流向服务器端发送请求信息;

  3.通过输入流获取服务器的响应信息;

  4.关闭相关资源;

package com.wxd.socket;import java.io.*;import java.net.Socket;/**
 * 基于TCP协议的Socket通信,实现客户端 */public class Client {    public static void main(String[] args) {        try {            //客户端            //1、创建客户端Socket,指定服务器地址和端口
            Socket socket =new Socket("localhost",10086);            //2、获取输出流,向服务器端发送信息
            OutputStream os = socket.getOutputStream();//字节输出流
            PrintWriter pw =new PrintWriter(os);//将输出流包装成打印流
            pw.write("用户名:admin;密码:123");
            pw.flush();
            socket.shutdownOutput();            //3、获取输入流,并读取服务器端的响应信息
            InputStream is = socket.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String info = null;            while((info=br.readLine())!=null){
                System.out.println("我是客户端,服务器说:"+info);
            }            //4、关闭资源            br.close();
            is.close();
            pw.close();
            os.close();
            socket.close();
        }catch(IOException e){
            e.printStackTrace();
        }
    }
}


控制台输出:  

我是客户端,服务器说:欢迎您!


 
Java学习网 更多文章 不想做将军的士兵不是好士兵,人生要瞄准方向,才有未来 Java多态的实现有哪些要求?实现多态的关键技术有哪些? 人生道路需要设计未来,决策正确,则一帆风顺,事业有成 做好职业生涯规划,等于成功了一半,一定要慎入行 请相信心理暗示的力量,这是每个人都拥有的一个看不见的法宝
猜您喜欢 浙江移动基于OpenStack的生产建设实践 硬盘坏道修复全攻略 分享图片 从开发角度看四类企业应用架构1: 通过Maven编译并运行一个Java应用 Android设计模式之单例模式