java多客户端TCP连接应用
来源:互联网 发布:linux单用户模式怎么进 编辑:程序博客网 时间:2024/06/11 12:55
案例介绍:
实现采用客户/服务器通信模式,基于TCP网络通信协议的多客户端简单应用
案例设计:
1.服务器端通过ServerSocket的accept方法等待客户端连接的到来
2.客户端向服务器端口发出TCP连接请求
3.服务器端accept方法接收请求,启动新线程处理与该客户端之间的通信服务器端主线程可继续等待客户端连接的请求
聊天客户端代码:
package com.iotek.test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.Socket;import java.net.SocketException;public class ClientInputStream implements Runnable {private Socket Socket=null;public ClientInputStream(java.net.Socket socket) {super();Socket = socket;}@Overridepublic void run() {try {BufferedReader br=new BufferedReader(new InputStreamReader(Socket.getInputStream()));while(true){try {String line=br.readLine();System.out.println(line);} catch (SocketException e) {break;}}br.close();} catch (IOException e) {e.printStackTrace();}}}聊天服务端代码:
package com.iotek.test;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class ChatServer {public static void main(String[] args) throws IOException {ServerSocket serverSocket=new ServerSocket(8888);int number=1;//保存客户端的个数while(true){Socket socket=serverSocket.accept();System.out.println("客户端"+number+"连接成功");//服务端开启一个独立的线程来对客户端进行读写操作new Thread(new ServerStream(socket, number)).start();number++;}}}客户输入流代码:
package com.iotek.test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.Socket;import java.net.SocketException;public class ClientInputStream implements Runnable {private Socket Socket=null;public ClientInputStream(java.net.Socket socket) {super();Socket = socket;}@Overridepublic void run() {try {BufferedReader br=new BufferedReader(new InputStreamReader(Socket.getInputStream()));while(true){try {String line=br.readLine();System.out.println(line);} catch (SocketException e) {break;}}br.close();} catch (IOException e) {e.printStackTrace();}}}客户输出流:
package com.iotek.test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;public class ClientOutputStream implements Runnable {private Socket socket = null;public ClientOutputStream(Socket socket) {super();this.socket = socket;}@Overridepublic void run() {try {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));PrintWriter pw = new PrintWriter(socket.getOutputStream(), true);while (true) {String line = br.readLine();pw.println(line);if (line.equals("bye")) {break;}}br.close();pw.close();socket.close();} catch (IOException e) {e.printStackTrace();}}}服务流代码:
package com.iotek.test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;public class ServerStream implements Runnable { private Socket socket=null; private int number; public ServerStream(Socket socket, int number) {super();this.socket = socket;this.number = number;}@Overridepublic void run() {try {BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter pw=new PrintWriter(socket.getOutputStream(),true);//自动清空缓冲区域 while(true){ String line=br.readLine(); System.out.println("客户端"+number+":"+line); pw.println(line.toUpperCase());if(line.equals("bye")){System.out.println("客户端"+number+"已经断开连接");break;}}br.close();pw.close();} catch (IOException e) {e.printStackTrace();}}}
阅读全文
0 0
- java多客户端TCP连接应用
- 模拟多客户端进行TCP连接[Java]
- java网络编程基于TCP的多客户端连接服务器
- TCP服务器接收多个客户端连接
- TCP的多个客户端连接服务器
- TCP-客户端连接服务端
- TCP客户端 长连接策略
- TCP客户端 长连接策略
- java Socket--tcp 一个服务器多客户端
- java模拟tcp客户端
- 客户端需要建立和管理多个TCP/IP连接
- 【TCP通信】多客户端连接一个服务器端总结
- TCP服务端vb.net支持多客户端连接
- 客户端与多服务端的TCP连接状态问题
- 【TCP通信】多客户端连接一个服务器端总结
- python 多线程实现多客户端连接的 TCP Server
- Java中多客户端同时连接服务端
- JAVA客户端连接SSL
- 数据结构--队列
- DatePickerDialog时间选择器+MVPPlugin开发插件的使用
- Android的数据存储与访问:一个商品展示
- sleep
- android activity跳转时黑屏解决方案
- java多客户端TCP连接应用
- 递归与分策略之合并排序
- 极大似然估计
- Ajax发送和获取json数据到Spring mvc
- AngularJS初始化的过程,以及需要的时候你该如何修改AngularJS的初始化
- Java并发编程CountDownLatch的使用1
- 微信小程序-页面跳转传值
- 进程间通信---管道
- [一起学Hive]之十四-Hive的元数据表结构详解