zoukankan      html  css  js  c++  java
  • Java中使用Socket实现服务器端和客户端通讯

    创建服务器端serverSocket

     1 import java.io.BufferedReader;
     2 import java.io.IOException;
     3 import java.io.InputStream;
     4 import java.io.InputStreamReader;
     5 import java.io.OutputStream;
     6 import java.io.PrintWriter;
     7 import java.net.ServerSocket;
     8 import java.net.Socket;
     9 
    10 /**
    11  * 服务端
    12  * @author Administrator
    13  *
    14  */
    15 public class Server {
    16 
    17     public static void main(String[] args) throws IOException {
    18         //创建一个服务器端socket,指定绑定的端口号,并监听此端口
    19         ServerSocket serverSocket = new ServerSocket(8888);
    20         //调用accept()方法开始监听,等待客户端的连接
    21         System.out.println("**********服务器即将启动,等待客户端的连接*************");
    22         Socket socket = serverSocket.accept();
    23         //获取输入流,并读取客户端信息
    24         InputStream inp = socket.getInputStream();
    25         //把字节流转换成字符流
    26         InputStreamReader isr = new InputStreamReader(inp);
    27         //为字符流增加缓冲区
    28         BufferedReader bfr = new BufferedReader(isr);
    29         String info = null;
    30         while((info=bfr.readLine())!=null){//循环读取数据
    31             System.out.println("我是服务器,客户端说:"+info);
    32         }
    33         socket.shutdownInput();//关闭输入流
    34         //向客户端传递的信息
    35         OutputStream ots = socket.getOutputStream();
    36         PrintWriter pw = new PrintWriter(ots);
    37         pw.write("欢迎登陆");
    38         pw.flush();
    39         
    40         //关闭资源
    41         pw.close();
    42         ots.close();
    43         bfr.close();
    44         isr.close();
    45         inp.close();
    46         socket.close();
    47         serverSocket.close();
    48         
    49     }
    50     
    51 }

    创建客户端socket

     1 import java.io.BufferedReader;
     2 import java.io.IOException;
     3 import java.io.InputStream;
     4 import java.io.InputStreamReader;
     5 import java.io.OutputStream;
     6 import java.io.PrintWriter;
     7 import java.net.Socket;
     8 import java.net.UnknownHostException;
     9 
    10 /**
    11  * 客户端
    12  * @author Administrator
    13  *
    14  */
    15 public class Client {
    16 
    17     public static void main(String[] args) {
    18         try {
    19             //创建一个客户端socket
    20             Socket socket = new Socket("localhost",8888);
    21             //向服务器端传递信息
    22             OutputStream ots = socket.getOutputStream();
    23             PrintWriter pw = new PrintWriter(ots);
    24             pw.write("用户名:admin;密码:123");
    25             pw.flush();
    26             //关闭输出流
    27             socket.shutdownOutput();
    28             //获取服务器端传递的数据
    29             InputStream is = socket.getInputStream();
    30             InputStreamReader isr = new InputStreamReader(is);
    31             BufferedReader br = new BufferedReader(isr);
    32             String info = null;
    33             while((info=br.readLine())!=null){
    34                 System.out.println("我是客户端,服务器说:"+info);
    35             }
    36             //关闭资源
    37             br.close();
    38             isr.close();
    39             is.close();
    40             pw.close();
    41             ots.close();
    42             socket.close();
    43         } catch (UnknownHostException e) {
    44             e.printStackTrace();
    45         } catch (IOException e) {
    46             e.printStackTrace();
    47         }
    48     }
    49     
    50 }

    先启动服务器端,再启动客户端

    服务器端打印结果为

    **********服务器即将启动,等待客户端的连接*************
    我是服务器,客户端说:用户名:admin;密码:123

    客户端打印结果

    我是客户端,服务器说:欢迎登陆
  • 相关阅读:
    VS的ncb、pdb文件分析
    理解First Chance和Second Chance避免单步调试
    Visual Studio调试之符号文件
    Visual Studio调试之断点技巧篇补遗
    Visual Studio调试之断点技巧篇
    不能设置断点的检查步骤
    调试术语
    Visual Studio调试之断点基础篇
    Visual Studio调试之断点进阶篇
    复制
  • 原文地址:https://www.cnblogs.com/jpwz/p/5695093.html
Copyright © 2011-2022 走看看