zoukankan      html  css  js  c++  java
  • 【Java】TCP套接字编程

    服务器

    server.java

    package socket;
    
    import java.io.*;
    import java.net.*;
    public class server {
    
    	    public static void main(String args[]) {
    	        try{
    	            ServerSocket server=null;
    	            
    	            try{
    	                //创建一个ServerSocket在端口4700监听客户请求
    	                server=new ServerSocket(7217);
    	                System.out.println("服务器已打开!");
    	            }catch(Exception e){
    	                e.printStackTrace();
    	            }
    	            
    	            Socket socket=null;
    	            
    	            try{
    	                //使用accept()阻塞等待客户请求,有客户
    	                socket=server.accept();//请求到来则产生一个Socket对象,并继续执行
    	            }catch(Exception e){
    	                e.printStackTrace();//出错,打印出错信息
    	            }
    	            
    	            //由Socket对象得到输入流,并构造相应的BufferedReader对象
    	            BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
    	            //从socket获取输入流并转换到输入流缓存,从这里可以读到从客户端发来的信息
    	            
    	            
    	            
    	            //由Socket对象得到输出流,并构造PrintWriter对象
    	            PrintWriter os=new PrintWriter(socket.getOutputStream());
    	            //同理的,输出流也是一个缓存,所以下面发送的话,
    	            //可能会有延迟的,要立即发送就调用flush方法,
    	            //它会立即清空缓存并把信息发出去
    	            
    	          //向客户端输出该字符串
                    os.println("来自服务器的消息!");
                    //刷新输出流,使Client马上收到该字符串
                    os.flush();
    	            
    	            //在标准输出上打印从客户端读入的字符串
    	            System.out.println("收到客户端的信息:"+is.readLine());
    	          
    	            os.close(); //关闭Socket输出流
    	            is.close(); //关闭Socket输入流
    	            socket.close(); //关闭Socket
    	            server.close(); //关闭ServerSocket
    	        }catch(Exception e){
    	            e.printStackTrace();//出错,打印出错信息
    	        }
    	    }
    	
    }
    
    

    客户端

    client.java

    package socket;
    
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;
    public class client {
    
    	public static void main(String[] args) {
            try{
            	
            	System.out.println("客户端已打开!");
            	
                Socket socket=new Socket("127.0.0.1",7217);//创建socket并连接本机的7217端口
                
                PrintWriter os=new PrintWriter(socket.getOutputStream());//输出流,本机到服务器
    
                BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));//输入流,服务器到本机
                
                System.out.println("收到来自服务器的消息:"+is.readLine());
                
                os.println("这是来自客户端的消息!");//发送消息
                os.flush();//推送
                
                os.close(); //关闭Socket输出流
                is.close(); //关闭Socket输入流
                socket.close(); //关闭Socket
                
            }catch(Exception e){
            	
                e.printStackTrace();//出错,打印出错信息
                
            }
    
        }
    
    }
    
    

    运行效果

    服务器输出:

    服务器已打开!
    收到客户端的信息:这是来自客户端的消息!
    

    客户端输出:

    客户端已打开!
    收到来自服务器的消息:来自服务器的消息!
    

    视频讲解

    视频讲解

  • 相关阅读:
    js基础四
    序列化和反序列化
    数组
    枚举
    Class对象和反射
    字符串String
    对象的克隆
    异常处理机制
    多继承和代码块
    接口和抽象类
  • 原文地址:https://www.cnblogs.com/minuy/p/12978294.html
Copyright © 2011-2022 走看看