在前几遍文章中,我们已经知道了客户端与服务器通信,包括多个客户端与服务器的通信,接下来我们演示下客户端与服务器的完整通信过程。

先看效果图

客户端1

客户端2

服务器端

服务器线程类:

<span style="font-size:18px;">public class Connection extends Thread {private JTextArea txt;private Socket st;private String msg = null;private BufferedReader br = null;private PrintStream ps;public Connection(Socket st, JTextArea txt) {this.st = st;this.txt = txt;start();}@Overridepublic void run() {try {br = new BufferedReader(new InputStreamReader(new DataInputStream(st.getInputStream())));ps=new PrintStream(new DataOutputStream(st.getOutputStream()));while(true){msg=br.readLine();txt.append("从客户端收到信息 "+msg+'\n');Server.send(msg);}} catch (Exception e) {e.printStackTrace();}}public void send(String msg){ps.println(msg);}
}
</span>

服务器与客户端进行连接:

<span style="font-size:18px;">public class Server extends JFrame {private JTextArea txt;private ServerSocket ss;private static List<Connection> conns=new ArrayList<Connection>();public Server(){txt=new JTextArea();this.setTitle("服务器");this.setLayout(new BorderLayout());this.add(new JScrollPane(txt),BorderLayout.CENTER);this.setSize(500,300);this.setVisible(true);run();}private void run(){try {ss=new ServerSocket(3000);txt.append("接受时间:"+new Date()+"\n");while(true){Socket st=ss.accept();conns.add(new Connection(st, txt));}} catch (Exception e) {e.printStackTrace();}}public static void send(String msg){for(Connection c:conns){c.send(msg);}}
}</span>

服务器主入口:

<span style="font-size:18px;">public class ServerMain {public static void main(String[] args) {Server server=new Server();}}</span>

客户端:

<span style="font-size:18px;">public class Client extends JFrame implements ActionListener {private JTextArea txta;private JTextField txtf;private JPanel pl;private JButton bt;private BufferedReader br;private DataOutputStream out;private PrintStream ps;private Container f = this.getContentPane();public Client() {f.setLayout(new BorderLayout());txta = new JTextArea();f.add(txta, BorderLayout.CENTER);txtf = new JTextField(20);bt = new JButton("发送");pl = new JPanel();pl.setLayout(new FlowLayout());pl.add(txtf);pl.add(bt);bt.addActionListener(this);f.add(pl, BorderLayout.SOUTH);setTitle("客户端");setSize(500, 300);setVisible(true);run();new Thread() {{start();}public void run() {while (true) {try {txta.append("收到消息 :" + br.readLine() + "\n");} catch (Exception e) {e.printStackTrace();}}}};}public void run() {try {Socket socket=new Socket("192.168.12.112", 3000);out=new DataOutputStream(socket.getOutputStream());ps=new PrintStream(out);br=new BufferedReader(new InputStreamReader(socket.getInputStream()));} catch (Exception e) {e.printStackTrace();}}@Overridepublic void actionPerformed(ActionEvent e) {if(e.getSource()==bt){String msg=txtf.getText();try {ps.println(msg);txta.append("已经发送消息:"+msg+"\n");} catch (Exception e2) {e2.printStackTrace();}}}}</span>

客户端入口:

<span style="font-size:18px;">public class ClientMain {public static void main(String[] args) {Client client=new Client();}}</span>

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

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

  1. Java网络编程笔记5

    在Java网络编程笔记4中我们看到了客户端与服务器通信的过程,只是在前面的程序只是单个客户端与服务器通信 的例子. 接下来我们看如何实现多个客户端与服务器通信,对于服务器来说,它要为每个客户端请求的S ...

  2. Java网络编程笔记

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

  3. Java网络编程笔记4

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

  4. Java网络编程笔记1

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

  5. Java网络编程笔记3

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

  6. Java网络编程笔记2

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

  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. linux下文件系统不丢数据扩容方法
  2. 说说数据库连接池工作原理和实现方案?
  3. Java一致性Hash算法的实现
  4. android imageview 锯齿,android 自定义圆角ImageView以及锯齿的处理
  5. boost::hana::back用法的测试程序
  6. C# ASP.NET Forms身份认证
  7. 易语言反截图_【易语言】模仿QQ截图
  8. UltraGrid中实现下拉Grid(UltraDropDown)
  9. 怎样增强MyEclipse的代码自动提示功能
  10. 【设计】拟物时钟-夜间模式切换
  11. RIP基础原理与实验
  12. 【TSP】基于matlab GUI粒子群算法求解旅行商问题【含Matlab源码 1334期】
  13. 谷歌发布adb-fastboot工具独立包
  14. 软件项目管理 第七章 进度计划
  15. 【SuperResolution】Spatial resolution的含义
  16. 淘宝小程序开发注意点
  17. 千锋swift培训教程
  18. STlink无法下载?解决过程记录。
  19. BCH公式和李代数求导
  20. C#读取Excel文件

热门文章

  1. mqtt 串口_MQTT网关介绍及应用原理
  2. python代码命令行tab补齐_Python在命令行下Tab键自动补全脚本
  3. echarts 地图 免费离线js,json包分享
  4. [转]MongoDB基本使用
  5. Task中的异常处理
  6. spring配置异步执行
  7. 2010-08-22 动漫店 员工卡缓存出现问题。
  8. 解决“Internet Explorer 无法打开 Internet站点已终止操作”问题(转)
  9. 学习ASP.NET比较完整的流程
  10. bzoj3295:[CQOI2011]动态逆序对