博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Netty学习1—传统单线程服务端
阅读量:6372 次
发布时间:2019-06-23

本文共 1204 字,大约阅读时间需要 4 分钟。

1 代码

import java.io.IOException;import java.io.InputStream;import java.net.ServerSocket;import java.net.Socket;public class OioServer1 {	@SuppressWarnings("resource")	public static void main(String[] args) throws Exception {		// 创建socket服务,监听10101端口		ServerSocket server = new ServerSocket(10101);		System.out.println("服务器启动!");		while (true) {			// 获取一个套接字【阻塞】			final Socket socket = server.accept();			System.out.println("一个新客户端连接!");			// 单线程业务处理			handler(socket);		}	}	/**	 * 读取数据	 */	public static void handler(Socket socket) {		try {			byte[] bytes = new byte[1024];			InputStream inputStream = socket.getInputStream();			while (true) {				// 读取数据【阻塞】				int read = inputStream.read(bytes);				if (read != -1) {					System.out.println(new String(bytes, 0, read));				} else {					break;				}			}		} catch (Exception e) {			e.printStackTrace();		} finally {			try {				System.out.println("socket关闭");				// 必须将第1个客户端关闭,第2个客户端才可以连进来。否则只能为第1个客户端服务				socket.close();			} catch (IOException e) {				e.printStackTrace();			}		}	}}

2 测试流程

利用telnet 127.0.0.1 10101模拟客户端,一个cmd窗口就是一个客户端。断点设置在server.accept()和int read = inputStream.read(bytes)位置,按F6 Step Over发现流程被阻塞。必须将第1个客户端关闭,第2个客户端才可以连进来,否则只能为第1个客户端服务。

转载地址:http://hcfqa.baihongyu.com/

你可能感兴趣的文章
这不是一篇随笔
查看>>
vc写csv文件
查看>>
LaTeX 加粗
查看>>
Microsoft Dynamics CRM 2011 SDK 5.07版本已经发布
查看>>
Go使用Gob存储数据
查看>>
经典人脸识别算法(特征脸,Fisherface,LBP)
查看>>
【MatConvNet】配置GPU
查看>>
window 2008 下 安装域管理并且控制qq和usb
查看>>
LVS-DR直接路由模式
查看>>
Oracle在Linux内核参数的修改
查看>>
最全团队管理手册
查看>>
linux cp
查看>>
网络安全系列之五十五 利用抓包来上传webshell
查看>>
Configuring a Squid Server to authenticate off Active Directory
查看>>
Android开发资源推荐
查看>>
PowerShell 导入 SQL Server 的 PS 模块
查看>>
python学习笔记-输入输出
查看>>
实战:在单网段环境中配置安装和配置DHCP服务器
查看>>
报表服务入门(实验5)创建共享数据集
查看>>
学会感谢自己
查看>>