zoukankan      html  css  js  c++  java
  • java实现最简单socket通讯 一对一通信

    server

    package com.as;
    import java.io.IOException;  
    import java.io.PrintWriter;  
    import java.net.ServerSocket;  
    import java.net.Socket;  
    import java.util.Scanner;  
      
    public class ServerDemo {  
        //服务器  
        public static void testServer(){  
            //创建一个服务器  
            System.out.println("等待客户端连接。。。");  
            PrintWriter pwtoclien = null;  
            Scanner keybordscanner = null;  
            Scanner inScanner = null;  
            ServerSocket ss = null;  
            try {  
                ss = new ServerSocket(6666);  
                //创建一个接收连接客户端的对象  
                Socket socket = ss.accept();  
                System.out.println(socket.getInetAddress()+"已成功连接到此台服务器上。");  
                //字符输出流  
                pwtoclien = new PrintWriter(socket.getOutputStream());  
                pwtoclien.println("已成功连接到远程服务器!"+"	"+"请您先发言。");  
                pwtoclien.flush();  
                keybordscanner = new Scanner(System.in);  
                inScanner = new Scanner(socket.getInputStream());  
                //阻塞等待客户端发送消息过来  
                while(inScanner.hasNextLine()){  
                    String indata = inScanner.nextLine();  
                    System.out.println("客户端:"+indata);  
                    System.out.print("我(服务端):");  
                    String keyborddata = keybordscanner.nextLine();  
                    System.out.println("我(服务端):"+keyborddata);  
                    pwtoclien.println(keyborddata);  
                    pwtoclien.flush();  
                }  
            } catch (IOException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }finally {  
                pwtoclien.close();  
                keybordscanner.close();  
                inScanner.close();  
                try {  
                    ss.close();  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
            }  
        }  
        public static void main(String[] args) {  
            testServer();  
        }  
    }
    

      client

    package com.as;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.net.Socket;
    import java.net.UnknownHostException;
    import java.util.Scanner;
    
    public class ClientDemo {
    	public static void testClient(){
    		System.out.println("正在向服务器请求连接。。。");
    		Socket socket = null;
    		Scanner keybordscanner = null;
    		Scanner inScanner = null;
    		PrintWriter pwtoserver = null;
    		try {
    			socket = new Socket("192.168.10.40", 6666);
    			inScanner = new Scanner(socket.getInputStream()); 
    			System.out.println(inScanner.nextLine());
    			pwtoserver = new PrintWriter(socket.getOutputStream());
    			System.out.print("我(客户端):");
    			//先读取键盘录入方可向服务端发送消息
    			keybordscanner = new Scanner(System.in);
    			while(keybordscanner.hasNextLine()){
    				String keyborddata = keybordscanner.nextLine();
    				//展示到己方的控制台
    				System.out.println("我(客户端):"+keyborddata);
    				//写到服务端的的控制台
    				pwtoserver.println(keyborddata);
    				pwtoserver.flush();
    				//阻塞等待接收服务端的消息
    				String indata = inScanner.nextLine();
    				System.out.println("服务端:"+indata);
    				System.out.print("我(客户端):");
    			}
    		} catch (UnknownHostException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}finally {
    			keybordscanner.close();
    			pwtoserver.close();
    			inScanner.close();
    			try {
    				socket.close();
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    		
    	}
    	public static void main(String[] args) {
    		testClient();
    	}
    }
    

      

  • 相关阅读:
    Java重温学习笔记,Java8新特性:函数式接口
    Java重温学习笔记,Java8新特性:Lambda 表达式
    236. 二叉树的最近公共祖先
    230. 二叉搜索树中第K小的元素
    117. 填充每个节点的下一个右侧节点指针 II
    116. 填充每个节点的下一个右侧节点指针
    111. 二叉树的最小深度
    109. 有序链表转换二叉搜索树
    剑指 Offer 68
    1367. 二叉树中的列表
  • 原文地址:https://www.cnblogs.com/springcloud/p/9035316.html
Copyright © 2011-2022 走看看