java基础入门-建立可以多客户端链接的ServerSocket
来源:互联网 发布:ebsco数据库怎么用 编辑:程序博客网 时间:2024/06/07 02:24
承接上一篇文章,今天谈论一下可以多客户端链接的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;}@Overridepublic 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 blocke.printStackTrace();}}}ThreadedEchoHandler类主要实现的功能跟上一篇差不多,都是接受客户端发过来的数据,然后复制一下打印出来,但是这里面继承了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循环里面,每个客户端链接过来,他都会开启一个独立线程来服务
扩展一下,这里的测试类只是用来测试用的,如果考虑到性能的问题,这里一般会采取线程池,而且还需要有检测链接是否还在的检测类,不然随着客户端链接的增加,内存直接爆掉。
而且这两个类还欠缺了一些东西,譬如客户端怎样退出?检测链接?半关闭?等等,这些后面待续
0 0
- java基础入门-建立可以多客户端链接的ServerSocket
- java基础入门-建立简单的ServerSocket
- java客户端与服务端建立连接 线程 ServerSocket
- Java网络编程基础 1 建立一个提供当前时间字符串的ServerSocket
- redis的java客户端jedis(一)建立链接
- ServerSocket的建立和使用
- Java 基于多客户端的ServerSocket—聊天服务器端,客户端Socket “操作文件”系统的程序拼接
- 利用线程池实现ServerSocket的多客户端连接
- ServerSocket 的建立与使用(多线程)
- Socket 基础解析使用ServerSocket建立聊天服务器
- java/android的Socket&&ServerSocket
- 【Java】ServerSocket的学习笔记
- Java网络编程基础 ServerSocket类使用
- ServerSocket和Socket建立通信(客户端发送消息服务器接收并返回到客户端接收输出)
- ServerSocket和Socket建立通信(客户端发送消息服务器接收并返回到客户端接收输出)
- java socket/serversocket/thread 服务器客户端任意聊天
- java36.Socket通信------ServerSocket的建立与使用示例
- java语言基础入门——字符串两种建立方式的比较
- android之计时器(Chronometer)的使用以及常用的方法
- Window平台OpenGL渲染环境之使用GLFW搭建
- android drawable类型
- Complementing a Strand of DNA
- 安装cpplint
- java基础入门-建立可以多客户端链接的ServerSocket
- 随机排列问题
- hdu 1030 数学题加观察
- Linux内核进程切换
- websphere停止服务,删除概要文件
- python中string的操作函数
- linux下统计程序/函数运行时间
- 计算二进制数的0的个数
- C++技巧之STL(持续更新)