zoukankan      html  css  js  c++  java
  • JavaSocket客户端,服务端通信

    1.客户端接受服务端的消息并打印:

    客户端:

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.Socket;
    
    
    public class Client {
    	private static final String IP = "localhost";//服务器地址 
    	private static final int PORT = 8000;//服务器端口号  
    
    	public static void main(String[] args) {
    		handler();
    	}
    
    	private static void handler() {
    		//创建一个流套接字,连接到指定主机上的指定端口号
    		Socket client = null;
    		try {
    			while(true){
    				client = new Socket(IP, PORT);
    				//取得输入流
    				InputStream is = client.getInputStream();
    				BufferedReader br = new BufferedReader(new InputStreamReader(is));
    				//读取服务器端数据 
    				System.out.println(br.readLine());
    				br.close();
    				is.close();
    			}
    		}catch (Exception e) {
    			System.out.println("客户端异常:" + e.getMessage()); 
    		}finally{
    			if(client != null){
    				try {
    					client.close();
    				} catch (IOException e) {
    					System.out.println("客户端异常:" + e.getMessage()); 
    				}
    			}
    		}
    	}
    }
    


     

    服务端:

    import java.io.BufferedWriter;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.Scanner;
    
    public class Server {
    	private static final int PORT = 8000;//监听的端口号
    
    	public static void main(String[] args) {
    		Server server = new Server();
    		server.init();
    	}
    
    	private void init(){
    		try {
    			ServerSocket serverSocket = new ServerSocket(PORT);
    			while(true){
    				Socket client = serverSocket.accept();
    				//一个客户端连接就开户一个线程处理
    				new Thread(new HandlerThread(client)).start();
    			}
    		} catch (IOException e) {
    			System.out.println("服务器异常:" + e.getMessage());
    		}
    	}
    
    	private class HandlerThread implements Runnable{
    
    		private Socket client;
    		public HandlerThread(Socket client) {
    			this.client = client;
    		}
    
    		@Override
    		public void run() {
    			try {
    				//取得输出流
    				OutputStream os = client.getOutputStream();
    				BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
    				//输入要输出给客户端的内容
    				Scanner sc = new Scanner(System.in);
    				bw.write(sc.nextLine());
    				bw.close();
    			} catch (IOException e) {
    				System.out.println("服务器异常:" + e.getMessage());
    			}finally{
    				if(client != null){
    					try {
    						client.close();
    					} catch (IOException e) {
    						client = null;
    						System.out.println("服务器异常:" + e.getMessage());
    					}
    				}
    			}
    		}
    	}
    }
    


     

    2.服务端接受客户端的消息并打印:

    客户端:

    import java.io.BufferedWriter;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.net.Socket;
    import java.util.Scanner;
    
    
    public class Client {
    	private static final String IP = "localhost";//服务器地址 
    	private static final int PORT = 8000;//服务器端口号  
    
    	public static void main(String[] args) {
    		handler();
    	}
    
    	private static void handler() {
    		//创建一个流套接字,连接到指定主机上的指定端口号
    		Socket client = null;
    		try {
    			while(true){
    				client = new Socket(IP, PORT);
    				//取得输出流
    				OutputStream os = client.getOutputStream();
    				BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
    				//输入要发送到服务端的消息
    				Scanner sc = new Scanner(System.in);
    				bw.write(sc.nextLine());
    				bw.close();
    				os.close();
    			}
    		}catch (Exception e) {
    			System.out.println("客户端异常:" + e.getMessage()); 
    		}finally{
    			if(client != null){
    				try {
    					client.close();
    				} catch (IOException e) {
    					System.out.println("客户端异常:" + e.getMessage()); 
    				}
    			}
    		}
    	}
    }
    


     

    服务端:

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class Server {
    	private static final int PORT = 8000;//监听的端口号
    
    	public static void main(String[] args) {
    		Server server = new Server();
    		server.init();
    	}
    
    	private void init(){
    		try {
    			ServerSocket serverSocket = new ServerSocket(PORT);
    			while(true){
    				Socket client = serverSocket.accept();
    				//一个客户端连接就开户一个线程处理
    				new Thread(new HandlerThread(client)).start();
    			}
    		} catch (IOException e) {
    			System.out.println("服务器异常:" + e.getMessage());
    		}
    	}
    
    	private class HandlerThread implements Runnable{
    
    		private Socket client;
    		public HandlerThread(Socket client) {
    			this.client = client;
    		}
    
    		@Override
    		public void run() {
    			try {
    				//取得输入流
    				InputStream is = client.getInputStream();
    				BufferedReader bw = new BufferedReader(new InputStreamReader(is));
    				//读取客户端发送来的数据 
    				System.out.println(bw.readLine());
    				bw.close();
    			} catch (IOException e) {
    				System.out.println("服务器异常:" + e.getMessage());
    			}finally{
    				if(client != null){
    					try {
    						client.close();
    					} catch (IOException e) {
    						client = null;
    						System.out.println("服务器异常:" + e.getMessage());
    					}
    				}
    			}
    		}
    	}
    }
    


     

  • 相关阅读:
    SQL Server CHARINDEX和PATINDEX详解
    MVC ListBoxFor raises “value cannot be null” exception
    jquery.uploadify动态传递表单元素
    C# 判断一字符串是否为合法数字(正则表达式)
    jquery 操作Listbox
    JQuery 操作 ListBox间移动和ListBox内移动
    jQuery获取Select选择的Text和 Value
    SQL 语句的执行效率
    JSON 序列化长度限制问题
    C#中利用FileSystemWatcher对单个文件内容的监视
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/2998628.html
Copyright © 2011-2022 走看看