




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Server:package com.socket_thread;import java.io.IOException;import .ServerSocket;import .Socket;import java.util.ArrayList;import java.util.Collections;import java.util.List;public class Server / 定义保存所有Socket的ArrayList,并将其包装为线程安全的public static List socketList = Collections.synchronizedList(new ArrayList();public static void main(String args) try ServerSocket socket = new ServerSocket(3000);while (true) / 代码会阻塞,将一直等待别人的连接Socket s = socket.accept();socketList.add(s);new Thread(new ServerThread(s).start(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();serverThread:package com.socket_thread;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintStream;import .Socket;public class ServerThread implements Runnable/定义当前线程所处理的SocketSocket s=null;BufferedReader br=null;public ServerThread(Socket s)this.s=s;/初始化该Socket对应的输出流try br=new BufferedReader(new InputStreamReader(s.getInputStream(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();Overridepublic void run() / TODO Auto-generated method stubString content=null;/采用循环不断从Socket中读取客户端发送过来的数据while (content=readFormClient()!=null) /遍历socketList中的每个Socket,将内容向每个Socket发送一次for(Socket s:Server.socketList)try PrintStream ps=new PrintStream(s.getOutputStream();ps.println(content); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();/* * 定义读取客户端数据方法 * return */private String readFormClient()try return br.readLine();/如果捕获异常,则表明该Socket对应的客户端已经关闭 catch (IOException e) / 删除该SocketServer.socketList.remove(s);return null;Client:package com.socket_thread;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintStream;import .Socket;import .UnknownHostException;public class Client public static void main(String args) / TODO Auto-generated method stubtry Socket socket = new Socket(, 3000);/ 客户端启动ClientThread线程不断的读取来自服务器的数据new Thread(new ClientThread(socket).start();PrintStream ps = new PrintStream(socket.getOutputStream();String line = null;/ 不断读取键盘输入BufferedReader br = new BufferedReader(new InputStreamReader(System.in);while (line = br.readLine() != null) / 将用户的键盘输入内容写入Socket对应的输出流ps.println(line); catch (UnknownHostException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();ClientThread:package com.socket_thread;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import .Socket;public class ClientThread implements Runnable/该线程负责处理的Socketprivate Socket socket;BufferedReader br=null;public ClientThread(Socket socket)this.socket=socket;try br=new BufferedReader(new InputStreamReader(socket.getInputStream(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();Overridepublic void run() / TODO Auto-generated method stubString content=null;/不断读取Socket输入
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年初级导游证考试知识点总结与预测题
- 2025年医学影像技术专家认证模拟题及解析
- 2025年养老评估师考试高频考点梳理
- 拉毛拉条灰施工课件
- 2025年进排气系统:进排气管项目合作计划书
- 抢救患者应急预案课件
- 2025年日用及医用橡胶制品项目合作计划书
- 华大新高考联盟2026届高三上学期9月教学质量测评英语试卷(含答案无听力原文及音频)
- 贵州省黔西南布依族苗族自治州兴义市2024-2025学年三年级下学期期末数学试题
- 家政保育员题库及答案
- 《复杂世界简单规律》课件
- 性别平等培训讲义
- 大于号小于号等于号田字格描红
- 普通心理学第六版PPT完整全套教学课件
- DISC沟通风格测试
- 大学体育:轮滑教案
- DB31-T 1380-2022 社会消防技术服务机构质量管理要求
- 常见天气系统课件
- 不良资产项目尽调指引
- 深基坑钢板桩支护方案
- 李家河大坝监测工程大坝安全监测报告
评论
0/150
提交评论