java中自己实现一个服务端对应多个客户端的简单代码
2016-09-05 22:32
946 查看
服务端代码:
客户端
客户端接收和发送消息与服务端的进程代码一样,大家有兴趣的话可以自己尝试着写一写。
public class MyServer { public static void main(String[] args) { new MyServer().initServer(10099); } public void initServer(int port) { try { ServerSocket server = new ServerSocket(port); System.out.println("服务器已经启动...."); int count = 0; //如果有多个客户端连接上来,服务端重新为客户端分配线程,这是一个服务端对应多个客户端的关键 while (true) { count++; Socket socket = server.accept(); System.out.println("已经连接" + (count) + "客户端:" + socket.getRemoteSocketAddress()); // 启动服务端接收客户端的消息的进程 new Thread(new ReceiveThread(socket)).start(); //启动段服务端向客户端发送消息的进程 new Thread(new SendThread(socket)).start(); } } catch (Exception e) { e.printStackTrace(); } } }
/** * 服务端发送消息的线程 * * @author wangjue * */ public class SendThread implements Runnable { private Socket socket; public SendThread(Socket socket) { this.socket = socket; } @Override public void run() { try { OutputStream ops = socket.getOutputStream(); while (true) { Scanner sc = new Scanner(System.in); //发送的消息以换行符结束 String s = sc.nextLine() + "\n"; ops.write(s.getBytes()); ops.flush(); } } catch (Exception e) { e.printStackTrace(); } } }
/** * 服务端接收客户端的消息的线程 * * @author wangjue * */ public class ReceiveThread implements Runnable { private Socket socket; public ReceiveThread(Socket socket) { this.socket = socket; } @Override public void run() { try { InputStream ips = socket.getInputStream(); ByteArrayOutputStream bao = new ByteArrayOutputStream(); while (true) { int t = ips.read(); //读到换行符结束 while (t != '\n') { bao.write(t); t = ips.read(); } byte[] b = bao.toByteArray(); String msg = new String(b); System.out.println("客户端说" + msg); } } catch (Exception e) { e.printStackTrace(); } } }
客户端
public class MyClient { public static void main(String[] args) { new MyClient().initClient("127.0.0.1", 10099); } public void initClient(String host, int port) { Socket socket; try { socket = new Socket(host, port); //启动客户端接收服务端的进程 new Thread(new ReceiveThread(socket)).start(); //启动客户端向服务端发送消息的进程 new Thread(new SendThread(socket)).start(); } catch (Exception e) { e.printStackTrace(); } } }
客户端接收和发送消息与服务端的进程代码一样,大家有兴趣的话可以自己尝试着写一写。
相关文章推荐
- 在java中客户端和服务端简单实现代码
- 简单完整的代码,通过这个代码你将对RSA加密算法在Java中的实现方法有一个初步的了解,这个类,你可以直接使用,水平高的,就自己修改完善下代码。
- 问题1:java中没有实现这种“byte a = 0xB2 --> String b = “B2””转换的简单实现需要自己实现。 答:自己编写的转换函数,思路将byte的高低4位分开,分别转换为对应的字符然后合成返回的字符串。 java 代码 1.
- Java网络编程(一)- 一个简单的服务端/客户端应用程序
- 连接主机Java网络编程(一)- 一个简单的服务端/客户端应用程序
- 虚拟机centos中java代码实现linux(作为服务端),windows(作为客户端)通信
- 也发一个自己实现的android简单文件选择器代码。支持多卡,排序
- java 实现简单http服务端,客户端DEMO
- 第一次动手写java的简单代码,实现输出一个空心菱形。
- Java IO——Socket:通过多线程实现多客户端与一个服务端通信
- 传智播客-一个服务端和多个客户端间的通信的简单实现
- Java中利用socket实现简单的服务端与客户端的通信(基础级)
- 用java实现简单的网络通信,相当于一个最简单的控制台qq(附代码) 推荐
- 用Java实现一个简单的服务器与客户端程序
- 一个简单的Android客户端从服务器端获取json数据并解析的实现代码
- 一个简单词法分析器的实现代码(java实现)
- ios消息推送客户端和服务端实现带代码(java)
- Java网络编程(一)- 一个简单的服务端/客户端应用程序
- Java中利用socket实现简单的服务端与客户端的通信(中级)——实现任意双向通信
- JAVA NIO实现服务端与客户端简单数据传输 JAVA NIO 之一