java socket 编程经典实例

来源:互联网 发布:成人用品淘宝店要求 编辑:程序博客网 时间:2024/05/16 16:06

服务器监听、并接收每个客户端的信息再群发到每个客户端

服务端

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 {// 定义当前线程处理的Socketprivate Socket socket = null;// 该线程对用的输入流private BufferedReader read = null;public RunableSocket(Socket s) throws IOException {this.socket = s;read = new BufferedReader(new InputStreamReader(socket.getInputStream()));}@Overridepublic 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()));}@Overridepublic 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);}}}



原创粉丝点击