java socket 编程经典实例
2013-10-31 21:04
369 查看
服务器监听、并接收每个客户端的信息再群发到每个客户端
服务端
package com.java.xiong.Net17; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.Socket; public class RunableSocket implements Runnable { // 定义当前线程处理的Socket private Socket socket = null; // 该线程对用的输入流 private BufferedReader read = null; public RunableSocket(Socket s) throws IOException { this.socket = s; read = new BufferedReader( new InputStreamReader(socket.getInputStream())); } @Override public void run() { String line=null; try{ while((line=getClentData())!=null){ for(Socket s:MyServer.list){ //向每个客户端输出信息 PrintStream print=new PrintStream(s.getOutputStream()); print.println(line); } } }catch(IOException io){ io.printStackTrace(); } } //读取客户端数据的方法 public String getClentData(){ String line=null; try{ line=read.readLine(); }catch(IOException io){ MyServer.list.remove(socket); } return line; } }
package com.java.xiong.Net17; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import java.util.List; public class MyServer { public static List<Socket> list=new ArrayList<Socket>(); public static void main(String [] args) throws Exception{ ServerSocket server=new ServerSocket(30001); while(true){ Socket scoket=server.accept(); list.add(scoket); new Thread(new RunableSocket(scoket)).start(); } } }
客户端
package com.java.xiong.Net17; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.Socket; //将服务器返回的数据打印出来 public class RubableClient implements Runnable { private Socket socket; private BufferedReader read; public RubableClient(Socket socket) throws IOException { this.socket = socket; this.read = new BufferedReader(new InputStreamReader( this.socket.getInputStream())); } @Override public void run() { try{ String line=null; while((line=read.readLine())!=null){ System.out.print(line); } }catch(IOException io){ io.printStackTrace(); } } }
package com.java.xiong.Net17; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.Socket; import java.net.UnknownHostException; public class MyClient { public static void main(String[] args) throws Exception, IOException { //向服务器发送请求 Socket socket = new Socket("127.0.0.1", 30001); new Thread(new RubableClient(socket)).start(); //获取输出流 PrintStream print = new PrintStream(socket.getOutputStream()); String line = ""; BufferedReader read = new BufferedReader(new InputStreamReader( System.in)); while((line=read.readLine())!=null){ //写入Socket对应的输出流 print.println(line); } } }
相关文章推荐
- java socket 编程经典实例
- JAVA socket编程实例
- Netty学习之二--Java socket编程(UDP实例)
- Java经典算法四十例编程详解+程序实例
- C++多线程编程入门之经典实例
- Java经典算法四十例编程详解+程序实例
- C# 并发编程 · 经典实例
- JAVA socket编程实例
- Java Socket编程心跳包创建实例解析
- Java经典编程300例之实例063 使用Comparable接口自定义排序
- 内核模块编程实例+经典内核Makefile
- java Socket 编程实例
- C++多线程编程入门之经典实例
- Java\Scala\Python三种语言求解经典编程实例(四)—— 求10000以内的自守数
- STL + c++ + 模板 + 重要思维 + 基础算法+ 经典算法 + 经典实例 + 编程总结+ 心得+ 入门必会 + 知识点汇总。
- C++多线程编程入门之经典实例
- Java Socket 编程实例学习
- Java socket 入门编程实例
- 小白自学C#之《C#.net_经典编程例子400个》实例001带历史信息的菜单 附自学源码