Java 基于 TCP/IP 实现 Socket中的多客户端通信
2017-04-16 23:47
761 查看
服务器
package com.learn; import java.io.IOException; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; /** * 基于TCP协议的Socket通信,实现用户登录 * * 服务端 */ public class Server { public static void main(String[] args) { Socket socket = null; // 记录客户端数量 int count = 0; try { // 1.创建一个服务器端的 Socket,即 ServerSocket,指定绑定的端,并监听 ServerSocket server = new ServerSocket(8888); // 2.调用 accept 方法开始监听,等待客户端连接 System.out.println("****服务器开始启动,等待客户端上线****"); // 循环监听客户端的连接 while (true) { socket = server.accept(); // 创建一个新的线程 ServerThread st = new ServerThread(socket); // 启动线程 st.start(); count++;// 客户端数量增加 System.out.println("客户端数量为:" + count); InetAddress address = server.getInetAddress(); System.out.println("客户端IP:" + address.getHostAddress()); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
客户端
package com.learn; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; /* * 服务器端线程处理类 */ public class ServerThread extends Thread { // 和本线程相关的 socket Socket socket = null; public ServerThread(Socket socket) { this.socket = socket; } // 线程执行的操作,响应客户端的请求 public void run() { InputStream is = null; InputStreamReader isr = null; BufferedReader br = null; OutputStream os = null; PrintWriter pw = null; try { // 3.获取一个输入流,用来读取客户端所发送的登录信息 is = socket.getInputStream(); // 字节输入流 isr = new InputStreamReader(is);// 将字节流转为 br = new BufferedReader(isr);// 为输入流添加缓冲 String info = null; while ((info = br.readLine()) != null) { System.out.println("我是服务器,客户端说" + info); } socket.shutdownInput();// 关闭输入流 // 4.获取输出流 os = socket.getOutputStream(); pw = new PrintWriter(os);// 包装打印流 pw.write("好的,我收到消息了,你可以出去玩了"); pw.flush(); socket.shutdownOutput(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { // 5.关闭资源 if (pw != null) pw.close(); if (br != null) br.close(); if (isr != null) isr.close(); if (is != null) is.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
相关文章推荐
- Java 基于 TCP/IP 实现 Socket中的多客户端通信
- Java 基于TCP/IP 实现简单的 socket 通信
- java分布式开发TCP/IP NIO无阻塞 Socket((基于消息方式实现系统间的通信) )(转)
- Java 基于TCP/IP 实现简单的 socket 通信
- Android Socket编程基于TCP实现客户端与服务器简易通信
- java 通过 socket 实现 服务器和客户端的通信 TCP
- 【Java TCP/IP Socket】基于NIO的TCP通信(含代码)
- [分布式java]基于JavaAPI实现消息方式的系统间通信:TCP/IP+NIO
- Java 基于 UDP 实现 Socket中的多客户端通信
- java 通过 socket 实现 服务器和客户端的通信 TCP
- Java TCP/IP Socket,基于NIO的TCP通信
- 基于Socket的TCP长连接(服务端Java+客户端Android),Service配合AIDL实现
- 【Java TCP/IP Socket】基于NIO的TCP通信(含代码)
- 【Java TCP/IP Socket】基于NIO的TCP通信(含代码)
- Java——基于java自身包实现消息系统间的通信(TCP/IP+NIO)
- linux网络编程之用socket实现简单客户端和服务端的通信(基于TCP)
- 【Java TCP/IP Socket】基于NIO的TCP通信(含代码)
- Java基于socket实现的客户端和服务端通信功能完整实例
- Java基于TCP/IP的Socket通信
- Java——基于java自身包实现消息系统间的通信(TCP/IP+NIO)