java基础入门-建立能够多client链接的ServerSocket
承接上一篇文章,今天谈论一下能够多client链接的ServerSocket。
这里面注意涉及到的技术点是:
1.ServerSocket
2.多线程
这次我们分成两个类来实现,先上代码:
package com.test.socket; import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner; public class ThreadedEchoHandler implements Runnable { private Socket socket = null; public ThreadedEchoHandler(Socket s) {
this.socket = s;
} @Override
public void run() {
InputStream inputStream;
try {
inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
Scanner scanner = new Scanner(inputStream);
PrintWriter printWriter = new PrintWriter(outputStream, true);
printWriter.println("welcome to testServer");
boolean done = false;
while (!done && scanner.hasNextLine()) {
String line = scanner.nextLine();
printWriter.println("Echo:" + line);
if (line.trim().equals("bye")) {
done = true;
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }
ThreadedEchoHandler类主要实现的功能跟上一篇几乎相同。都是接受client发过来的数据,然后复制一下打印出来,可是这里面继承了Runnable,能够支持多线程
package com.test.socket; import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner; public class TestSocket {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8189);
while (true) {
Socket socket = serverSocket.accept();
ThreadedEchoHandler handler = new ThreadedEchoHandler(socket);
Thread thread = new Thread(handler);
thread.start();
}
}
}
TestSocket依旧是測试类,这里跟上一篇文章有差别的地方就在while循环里面,每一个client链接过来,他都会开启一个独立线程来服务
扩展一下,这里的測试类仅仅是用来測试用的,假设考虑到性能的问题,这里通常会採取线程池,并且还须要有检測链接是否还在的检測类,不然随着client链接的添加,内存直接爆掉。
并且这两个类还欠缺了一些东西,譬如client如何退出?检測链接?半关闭?等等,这些后面待续
java基础入门-建立能够多client链接的ServerSocket的更多相关文章
- WebSocket.之.基础入门-建立连接
WebSocket.之.基础入门-建立连接 1. 使用开发工具(STS.Eclipse等)创建web项目.如下图所示,啥东西都没有.一个新的web项目. 2. 创建java类.index.jsp页面. ...
- java基础——入门篇
整体大纲图 1.认识java 核心知识点:JVM.搭建Java开发环境.java的发展史.java特点.java程序类型.垃圾收集器.J2SE下载和安装.环境变量的配置和测试.以及简单的开发工具的使用 ...
- Java基础入门知识
Java编程入门知识 知识概要: (1)Java入门基本常识 (2)Java的特性跨平台性 (3)Java的编程环境的搭建 (4)Java的运行机制 (5)第一个Java小程序入门 (1)Java ...
- java基础入门-语法(1)
因为平时用到一些java的项目,比如ElasticSearch,zookeeper等,有时也想看看里面怎么实现的,或者看到别人分析原理时候会用到java源码, 自己也想跟着学一下,最起码能看懂别人的分 ...
- Java电话薄项目(Java基础入门)
面向对象程序设计(Java基础) 1.项目介绍: 该项目能够实现对电话薄的添加,查找,修改,删除,排序等基本操作. 用户进入系统中首先进入主菜单中,在主菜单中可以选择相应的操作,用户可以选择每项操作前 ...
- JAVA基础入门
Java入门基础 1.IDE->Eclipse 新建程序步骤 1.创建一个Java项目 2.创建一个包(package) 也就相当于C#中的命名空间C++中的头文件 3.创建一个类 这样就完成了 ...
- [Skill]VBA零基础入门及实践:根据链接展示图片
简介 VBA(Visual Basic for Applications)是依附在应用程序(例如Excel)中的VB语言.只要你安装了Office Excel就自动默认安装了VBA,同样Word和Po ...
- Java基础入门 - 三种注释及文档注释详解
类似C/C++,Java也支持单行和多行注释 注释中的字符在编译时会被忽略 注释通常为类.变量和方法的主要描述 单行注释 // 注释内容 多行注释 /* 注释内容 */ /* * 注释内容 */ 文档 ...
- Java 基础入门随笔(11) JavaSE版——继承、覆盖、抽象类
1.面向对象的特征二:继承 定义: 指一个对象直接使用另一对象的属性和方法. 继承好处: 1.提供代码的复用性. 2.让类与类直接产生了关系,给第三个特征多态提供了前提. java中支持单继承.不直接 ...
随机推荐
- Linux组和提权
目 录 第1章 组命名管理** 1 1.1 group组信息和密码信息 1 1.1.1 /etc/group 组账户信息 1 1.1.2 /etc/gshadow 组密码信息 ...
- 如何用纯 CSS 创作一个充电 loader 特效
效果预览 在线演示 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/deNqdV 可交互视频教程 此视 ...
- 条款8:别让异常逃离析构函数(prevent exception from leaving destructors)
NOTE: 1.析构函数绝对不要吐出异常.如果一个被析构函数调用的函数可能抛出异常,析构函数应该扑捉任何异常,然后吞下他们(不传播)或结束程序. 2.如果客户需要对某个操作函数运行期间抛出的异常做出反 ...
- tornado框架基础04-模板基础
01 模板 模板演示 配置路径 在 application 中配置模板文件和静态文件的路径: template_path='templates', static_path='static', 模板 & ...
- 杭电 4004 The Frog's Games 青蛙跳水 (二分法,贪心)
Description The annual Games in frogs' kingdom started again. The most famous game is the Ironfrog T ...
- NOI模拟赛(3.15) sequence(序列)
Description 小A有N个正整数,紧接着,他打算依次在黑板上写下这N个数.对于每一个数,他可以决定将这个数写在当前数列的最左边或最右边.现在他想知道,他写下的数列的可能的最长严格上升子序列(可 ...
- PS学习笔记(02)
书籍推荐: <设计之下>这本APP设计书字里行间都透露出了真实,作者能将其工作流程和方法分享出来,实在值得尊敬.通过这本书全面了解了真实的设计工作是怎么做的,今后可以用到自己的工作中.赞! ...
- Mysql学习总结(44)——Linux下如何实现mysql数据库每天自动备份定时备份
概述 备份是容灾的基础,是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从应用主机的硬盘或阵列复制到其它的存储介质的过程.而对于一些网站.系统来说,数据库就是一切,所以做好 ...
- [转]fedora国内源常见配置
1.参考:1.http://mirrors.ustc.edu.cn/2.http://mirrors.fedoraproject.org/publiclist#CN3.http://mirrors.n ...
- 汕头市赛srm8 C-3
n<=100000个点m<=300000条边有权无向联通图,给出K<=10000个特殊点求K个点中任意两点最短路的最小值. 方法一:K小,随便搞.先构造最短路树,在最短路树上Dijk ...