网络编程之多线程-7.docx_第1页
网络编程之多线程-7.docx_第2页
网络编程之多线程-7.docx_第3页
网络编程之多线程-7.docx_第4页
网络编程之多线程-7.docx_第5页
已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论