网络编程-ServerSocket与Socket

Socket

  • 是两台计算机之间通信的端点,是网络驱动提供给应用程序编程的一种接口、一套标准、一种机制

ServerSocket

  • 用于创建服务器,创建完成后会绑定一个端口号
  • 然后此服务器可以等待客户端连接
  • 每连接一个客户端,服务器就会得到一个Socket对象,用于跟客户端进行通信

TCP 协议 的 C/S程序

  • 需要用到两个类,来编写TCP协议的 CS程序

    1. ServerSocket 搭建服务器
    2. Socket 搭建客户端
  • 注意:先创建服务器,再创建客户端连接

  • 服务器搭建(需要throws IOException)

        //搭建服务器(占用端口号)
        ServerSocket server = new ServerSocket(55565);
        //等待服务器连接
        Socket socket = server.accept();
  • 客户端搭建(需要throws IOException)
Socket socket = new Socket("localhost",55565);
  • 常用交互方式
  • 服务器
        //搭建服务器(占用端口号)
        ServerSocket server = new ServerSocket(55565);
        //等待服务器连接
        Socket socket = server.accept();
        //获得输出流
        OutputStream os = socket.getOutputStream();
        //输出流转打印流
        PrintStream ps = new PrintStream(os);
        ps.println("欢迎连接服务器");
  • 客户端
		//客户端搭建
		Socket socket = new Socket("localhost",55565);
		//获得输入流
        InputStream is = socket.getInputStream();
        //将输入流转为字符流后转为缓存读取流
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        //读一行
        String test = br.readLine();
        System.out.println("客户端接收到消息:"+test);
  • 在服务器中加入多线程
		//搭建服务器(占用端口号)
        ServerSocket server = new ServerSocket(55565);
        while (true){
           //等待服务器连接
           Socket socket = server.accept();
           //创建线程来实现交互
           new Thread() {
               @Override
               public void run() {
                   try {
                       //注意 服务器先获取输入流,客户端就要先输出
                       InputStream is = socket.getInputStream();
                       OutputStream os = socket.getOutputStream();
                   } catch (IOException e) {
                       e.printStackTrace();
                   }
               }
           }.start();
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值