zoukankan      html  css  js  c++  java
  • java socket 编程经典实例

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

    服务端

    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);
    		}
    	}
    
    }
    



  • 相关阅读:
    部署 AppGlobalResources 到 SharePoint 2010
    还原一个已删除的网站集
    使用仪表板设计器配置级联筛选器 (SharePoint Server 2010 SP1)
    File or arguments not valid for site template
    Pex and Moles Documentation
    Content Query Webpart匿名访问
    Running Moles using NUnit Console from Visual Studio
    Calling a WCF Service using jQuery in SharePoint the correct way
    Updating Content Types and Site Columns That Were Deployed as a Feature
    asp.net中判断传过来的字符串不为空的代码
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3400152.html
Copyright © 2011-2022 走看看