多客户端通信的Java套接字程序
来源:互联网 发布:软件系统调试方案 编辑:程序博客网 时间:2024/06/06 05:24
这次设计了一个支持多客户端的通信小程序,实现服务端和客户端的实时通信,主要思想是利用Java套接字技术和线程池。服务端的程序如下:
import java.io.*;import java.net.ServerSocket;import java.net.Socket;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** * Created by Hui on 2016/6/7. */public class ServerTest { private int poolSize = 10; private static ExecutorService threadPool = null; public void init() { System.out.println("Server init..."); threadPool = Executors.newFixedThreadPool(poolSize); } public static void main(String[] args) { try { new ServerTest().init(); ServerSocket server = new ServerSocket(8888); while (true) { Socket incoming = server.accept(); System.out.println("A Client Coming..."); threadPool.submit(new ReturnMessage(incoming)); } } catch (IOException e) { e.printStackTrace(); } } public static class ReturnMessage implements Runnable { private Socket socket; public ReturnMessage(Socket socket) { this.socket = socket; } @Override public void run() { try { DataOutputStream output = new DataOutputStream(socket.getOutputStream()); DataInputStream input = new DataInputStream(socket.getInputStream()); String clientStr = input.readUTF(); System.out.println("Client Say: " + clientStr); if (!"BYE".equals(clientStr)) { output.writeUTF("Echo:" + clientStr); } output.writeUTF("Good Bye!!!"); output.close(); input.close(); } catch (IOException e) { e.printStackTrace(); } } }}服务端实时的监听8888端口,一旦有链接即会建立与客户端的联系。
客户端连接的代码如下:
import java.io.*;import java.net.Socket;/** * Created by zhaoyonghui on 16/6/7. */public class SocketTest { public static final String HOST = "你的服务器IP地址"; public static final int PORT = 8888; public static void main(String[] args) { Socket socket = null; System.out.println("Client Start..."); try { while (true) { socket = new Socket(HOST, PORT); DataInputStream inputStream = new DataInputStream(socket.getInputStream()); DataOutputStream outputStream = new DataOutputStream(socket.getOutputStream()); InputStreamReader reader = new InputStreamReader(System.in); String str = new BufferedReader(reader).readLine(); outputStream.writeUTF(str); String responseStr = inputStream.readUTF(); System.out.println(responseStr); if ("Good Bye!!!".equals(responseStr)) { break; } } } catch (IOException e) { e.printStackTrace(); } finally { if (socket != null) { try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } }}
1 0
- 多客户端通信的Java套接字程序
- Java 利用套接字Socket实现简单的服务器与客户端通信
- 套接字之客户端和服务端的一次通信
- 手机程序java认证客户端套接字(Socket)的超时
- Java网络通信套接字
- java通信&套接字Socket
- java socket 套接字通信
- Linux C语言编程-Linux网络通信--Linux上使用套接字(socket)来处理信息---编写一个单进程非阻塞多客户的套接字客户端
- java认证:客户端套接字(Socket)的超时
- 【C++】Winsock套接字编程,简单的TCP/IP通信代码(客户端、服务端)
- 流式套接字实现简单的客户端/服务端通信过程
- 【网络编程】使用流式套接字实现简单的客户端/服务端通信过程
- 套接字之多个客户端和一个服务器的串行多次通信
- 套接字之一个客户端和一个服务器的并行多次通信
- 使用流式套接字实现简单的客户端/服务端通信过程
- 流式套接字实现简单的客户端/服务端通信过程
- java客户端和vc程序通信时的编码问题
- Socket套接字:客户端与服务端进行通信
- NullPointerException: Unable to serialize editorHistoryManager state
- Bitmap性能问题
- java获取获得Timestamp类型的当前系统时间
- Mac OSX 下 Hadoop 使用本地库提高效率
- 内省_思维导图总结
- 多客户端通信的Java套接字程序
- Java编程性能优化一些事儿
- 平衡二叉树构造方法
- android虚拟按键挤压布局和硬件加速
- Linux rz与sz
- git 使用
- 量子计算与云计算将“碰撞”出怎样的未来生活?
- Hadoop 2.x build native library on Mac os x
- Lowest Common Ancestor of a Binary Search Tree