美文网首页
进阶版socket

进阶版socket

作者: 请叫我刚爷 | 来源:发表于2019-10-23 00:29 被阅读0次

服务端接收不止一个客户端所以基础版socket已经不满足了。(基础版翻一下我的历史文档)以下暂时可以满足多客户端连接。

package com.netty.socketDemo2;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.ServerSocket;
import java.net.Socket;


public class SocketServer {
    
    public static void main(String[] args) throws UnsupportedEncodingException, IOException {
        // 第一步、创建ServerSocket对象,绑定监听端口
        int port = 6667;
        ServerSocket serverSocket = new ServerSocket(port);
        // 第二部、监听端口
        Socket client = null;
        while (true) {//此处是为了避免数据处理过程中异常,造成程序退出,毕竟服务端不可能出了问题手动处理
            try {
                //accept()是一個阻塞方法,当有链接连接时才会创建
                client = serverSocket.accept();
                //创建一个线程去处理当前信息,否则无法接收下一个连接
                new Thread(new ServerHandler(client)).start();;
            } catch (IOException e) {
                System.out.println("服务端异常");
            }
        }
    }
    
}

package com.netty.socketDemo2;

import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;

public class ServerHandler implements Runnable{

    public static final int MAX_DATA_LEN = 1024;
    private final Socket socket;

    public ServerHandler(Socket socket) {
        this.socket = socket;
    }

    @Override
    public void run() {
        doStart();
    }
    
    public void doStart() {
        InputStream inputStream = null;
        try {
            // 第三步、建立好连接后,通过输入流读取客户端发送的请求信息
            inputStream = socket.getInputStream();
            while (true) {
                byte[] data = new byte[MAX_DATA_LEN];
                int len;
                while ((len = inputStream.read(data)) != -1) {
                    String message = new String(data, 0, len);
                    System.out.println("客户端传来消息: " + message);
                    // 第四部、通过输出流向客户端发送响应信息
                    socket.getOutputStream().write(data);
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            //第五步关闭资源
            try {
                inputStream.close();
            } catch (Exception e2) {
            }
            try {
                socket.close();
            } catch (Exception e2) {
            }
        }
    }

    
}

相关文章

  • 进阶版socket

    服务端接收不止一个客户端所以基础版socket已经不满足了。(基础版翻一下我的历史文档)以下暂时可以满足多客户端连接。

  • Netty图解(二):进阶版的NIO

    进阶版--NIO通信server端部分代码: 进阶版--NIO通信client端部分代码: 进阶版--NIO通信执...

  • android进阶之路精简版

    《android进阶之路精简版》 转载注明出处: android进阶之路精简版

  • SpringBoot集成netty-socket.io

    netty-socekt.IO官网 socket.io是一个netty.socket node版的java实现版,...

  • 基本版socket

    基本版socket服务端 socket基础版客户端 大致思路如下,

  • python进阶 Socket

    Socket:(基于TCP、IP协议的网络通信)套接字 基于Socket实现聊天机器人# 客户端import so...

  • zookeeper循序渐进

    zookeeper简介 zookeeper安装和使用 zookeeper进阶 python版kazoo进阶

  • 网络与TCP

    目录 1.socket服务端 2.socket客户端 3.TCP基础版 4.TCP循环版 5.TCP异常处理 6....

  • 标题:牛人求学课进阶版

    标题:牛人求学课进阶版 学号:5052-韩烟琪 字数: 打卡时间: 昨晚的分享——牛人求学课进阶版。 01 强反馈...

  • iOS进阶之Socket

    【如何快速的开发一个完整的iOS直播app】(搭建Socket即时通讯服务器)记得以前越狱加钩子,是用CocoaA...

网友评论

      本文标题:进阶版socket

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