在Java网络编程笔记4中我们看到了客户端与服务器通信的过程,只是在前面的程序只是单个客户端与服务器通信 的例子。

接下来我们看如何实现多个客户端与服务器通信,对于服务器来说,它要为每个客户端请求的Socket建立一个线程,并通过它进行通信。

在这里创建一个线程类用来管理Socket:

<span style="font-size:18px;">public class ServerThread extends Thread {private Socket socket;private int num;public ServerThread(Socket socket,int num){this.socket=socket;this.num=num;}@Overridepublic void run() {try {InputStream is=socket.getInputStream();OutputStream os=socket.getOutputStream();DataInputStream dis=new DataInputStream(is);String request=dis.readLine();System.out.println(request);PrintStream ps=new PrintStream(os);ps.print("这是服务器发来的---->");socket.close();} catch (Exception e) {e.printStackTrace();}}
}</span>

接着运行主程序与客户端进行通信:

<span style="font-size:18px;">public class Server {public static void main(String[] args) {try {ServerSocket ss=new ServerSocket(3000);int clientnum=0;while(true){ServerThread st=new ServerThread(ss.accept(),clientnum);st.start();System.out.println(clientnum++);}} catch (Exception e) {e.printStackTrace();}}}</span>

客户端与前面的并无差别:

<span style="font-size:18px;">public class Client {public static void main(String[] args) {try {Socket socket = new Socket("192.168.12.112", 3000);BufferedReader bfr = new BufferedReader(new InputStreamReader(socket.getInputStream()));String request=bfr.readLine();System.out.println(request);OutputStream outputStream = socket.getOutputStream();PrintStream printStream = new PrintStream(outputStream);printStream.print("Client--->");socket.close();} catch (UnknownHostException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}</span>

转载请注明出处:http://blog.csdn.net/hai_qing_xu_kong/article/details/42803955   情绪控_

Java网络编程笔记5相关推荐

  1. Java网络编程笔记

    Java网络编程 14-1 网络编程概述 14-2 网络通信要素概述 14-3 通信要素一:IP和端口号 InetAddress类测试 14-4 通信要素二:网络协议 14-5 TCP网络编程 TCP ...

  2. Java网络编程笔记4

    Socket和ServerSocket,网络编程可以分为创建Socket.打开连接Socket的输入流和输出流,对Socket进行编程,关闭Socket. 创建Socket 一个功能齐全的Socket ...

  3. Java网络编程笔记1

    网络编程的基础知识 什么叫计算机网络,就是把分布在不同地理区域的计算机与专门的外部设备通信线路互连成一个规模大.功能强的网络系统. 计算机网络主要能做些以下功能: 1)资源共享 2)信息传输与集中处理 ...

  4. Java网络编程笔记3

    如何使用POST请求和GET请求向Web站点发送请求,参考以下代码: import java.io.BufferedReader; import java.io.InputStream; import ...

  5. Java网络编程笔记2

    如果要实现多线程下载,可以定义以下步骤: 1)创建URL对象(URL代表统一资源定位器) URL url=new URL(path);//path资源路径 2)获取URL对象指向资源的大小,使用URL ...

  6. Java网络编程笔记6

    在前几遍文章中,我们已经知道了客户端与服务器通信,包括多个客户端与服务器的通信,接下来我们演示下客户端与服务器的完整通信过程. 先看效果图 客户端1 客户端2 服务器端 服务器线程类: <spa ...

  7. java 网络编程学习笔记

    java 网络编程学习笔记 C/S模式:客户端和服务器 客户端创建流程 1 1.建立Socket端点 2 3 Socket s = new Socket(绑定地址, 绑定端口); 2.确认源数据方式和 ...

  8. 菜鸟学习笔记:Java提升篇9(网络1——网络基础、Java网络编程)

    菜鸟学习笔记:Java提升篇9(网络1--网络基础.Java网络编程) 网络基础 什么是计算机网络 OS七层模型 Java网络编程 InetAddress InetSocketAddress URL类 ...

  9. JAVA网络编程个人笔记 第4章 inet地址

    JAVA网络编程个人笔记 第4章 inet地址 Internet寻址 创建InetAddress对象 常用方法 getLocalHost() 代码实现 getByName() 代码实现 getAllB ...

最新文章

  1. 区块链 智能合约 简介
  2. 计算机应用专业综合理论试卷2009,2009年湖南对口升学计算机应用专业综合试卷121...
  3. 麻省理工学院研究人员设计出针对幽灵党和熔毁的DAWG方法
  4. 2011年上海交通大学计算机研究生机试真题
  5. 算法训练 最小乘积(基本型) (蓝桥杯水题)
  6. 递归下降分析程序的设计与实现_递归就是这么简单
  7. 【快速安装Docker服务及Docker配置、Docker常用命令。】
  8. 源码分析参考:Queue
  9. 【报告分享】2019年中国智能门锁发展与应用白皮书.pdf
  10. 基于ASP.NET AJAX技术开发在线RSS阅读器(下篇)
  11. java用循环图形显示_请问如何在使用循环绘制图形时使每个图形的显示之间有一定的延迟时间?...
  12. 彻底卸载2345系列
  13. 文本信息过滤中的变体词识别(一)
  14. 【工具】D2RQ安装和配置
  15. 月入2万的10个小生意项目
  16. 大写金额换算器iOS版源代码
  17. 24时区来源,CST,CET,UTC,DST,Unix时间戳概述、关系、转换
  18. h5页面跳转微信小程序。
  19. 100+套大数据可视化模板
  20. 05-使用Redis缓存数据,管理员相关数据表

热门文章

  1. List和List的区别?
  2. UOJ46. 【清华集训2014】玄学
  3. Git 2.18版本发布:支持Git协议v2,提升性能
  4. Linux 之alias 命令别名
  5. 当try、catch中有return时,finally中的代码会执行么?
  6. django里static配置静态文件的引入
  7. Angular19 自定义表单控件
  8. LeetCode | Path-Sum
  9. 用今日头条的方法推荐公开课
  10. TCP 的那些事儿(下)