Socket编程

网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。

Socket编程多用于C/S结构的项目:

服务器端需要创建ServerSocket对象,并监听客户端发起的连接请求;客户端创建Socket对象。两者通过IO流交换数据。

Demo:

 

Server端

/**
 * Created by Mr.Wang on 2019/2/27.
 */
public class ServerSocketDemo {
    public static void main(String[] args) {
        try {
            ServerSocket serverSocket = new ServerSocket(8888);                                                   //1.建立ServerSocket

            System.out.println("----这是服务器端,正在监听请求-----");

            Socket socket = serverSocket.accept();                                                                      //2.监听获取客户端发来请求,并建立Socket对象进行通信

            System.out.println("----服务器端已与客户端连接成功----");

            InputStream inputStream = socket.getInputStream();                                                          //获取socket的输入流
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));

            System.out.println("----客户端发来如下消息----");
            String msg = null;
            while((msg = bufferedReader.readLine()) != null){
                System.out.println(msg);
            }

            socket.shutdownInput();                                                                                     //获取输出流之前必须先关闭输入流

            OutputStream outputStream = socket.getOutputStream();
            PrintWriter printWriter = new PrintWriter(outputStream);
            printWriter.write("欢迎您");
            printWriter.flush();


            bufferedReader.close();                                                                                     //关闭资源
            inputStream.close();
            outputStream.close();
            printWriter.close();
            socket.close();
            serverSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
        }
    }
}

 

客户端:

/**
 * Created by Mr.Wang on 2019/2/27.
 */
public class ClientSocketDemo {
    public static void main(String[] args) {
        try {
            System.out.println("***这是客户端,准备向连接到服务器***");
            Socket socket = new Socket("127.0.0.1",8888);

            System.out.println("***已与服务器端连接***");
            OutputStream outputStream = socket.getOutputStream();
            PrintWriter printWriter = new PrintWriter(outputStream);
            printWriter.write("用户名:123, 密码:321");
            printWriter.flush();

            socket.shutdownOutput();                                                                                    //获取输入流之前必须先关闭输出流

            InputStream inputStream = socket.getInputStream();                                                          //获取socket的输入流
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));

            System.out.println("***服务器端发来如下消息***");
            String msg = null;
            while((msg = bufferedReader.readLine()) != null){
                System.out.println(msg);
            }


            printWriter.close();
            outputStream.close();
            bufferedReader.close();
            inputStream.close();
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值