Android面试题之Java网络通信基础知识

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点

网络通信基础

socket

socket是应用层与TCP/IP协议族通信的中间软件抽象,操作系统把传输层一下的内容都包装了,应用层只需要用socket即可完成网络请求

Tcp是基于流;UDP是基于DatagramPacket数据报;socket可以利用DatagramPacket进行UDP通信

网络请求3部分
  • 连接(客户端和服务端)
  • 读网络数据
  • 写网络数据
BIO、NIO、AIO
  • BIO:阻塞的IO
  • NIO(IO多路复用):一个线程同时管理多个和客户端的连接,一般应用线程数量限制为1024个(系统限制,总共65535,要除去系统使用)
  • AIO(异步IO):目前只有Windows上完全实现
BIO网络编程
服务端
private static ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()*2);
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket();
        serverSocket.bind(new InetSocketAddress(10001));
        System.out.println("start server ....");
        try {
            while (true){
                executorService.execute(new ServerTask(serverSocket.accept()));
            }

        }finally {
            serverSocket.close();
        }
    }

    private static class ServerTask implements Runnable{
        pr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值