zoukankan      html  css  js  c++  java
  • Socket通信

    首先创建Socket通信服务器,用于监听客户端的请求

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    //import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    import org.apache.log4j.Logger;
    
    
    public class TheService{
        //日志输出
        private static Logger log=Logger.getLogger(TheService.class);
        
    
        /**
         * @param args
         * @throws IOException 
         */
        public static void main(String[] args){
            // TODO Auto-generated method stub    
            ServerSocket serverSocket =null;
            Socket socket =null;
            BufferedReader br = null;
            PrintWriter pw = null;
            String receive =null;
            String lineTxt = null;
            log.error("系统开始监听之前");
            System.out.println("系统开始监听之前");    
            try {
                //发布服务器监听端口号
                serverSocket=new ServerSocket(6666);
                //启用监听器用于监听客户端的请求
                socket=serverSocket.accept();
                System.out.println("系统开始监听");
                
                //用于接收客户端传递数据
                br=new BufferedReader(new InputStreamReader(socket.getInputStream()));    
                System.out.println("接收客户端传递数据");
                //用于接收客户端数据之后向客户端返回数据
                pw=new PrintWriter(socket.getOutputStream());
                log.error("开始接受客户端传递数据");
                //接收数据之后开始读取发送过来的数据
                while(true){
                    receive=br.readLine();                
                    System.out.println("接收客户端传送数据为:"+receive);                
                    break;
                }
                log.error("正在通过接受的路径查看数据");
                //我这边是传递的一个本地绝对路径,认识你后根据绝对路径来读取该路径下的文件内容
                File file=new File(receive);
                //判断指定路径下文件是否存在以及是否是文件
                if(file.isFile()&&file.exists()){
                    //如果是文件就开始读取指定文件
                    InputStreamReader read = new InputStreamReader(
                            new FileInputStream(file));
                            BufferedReader bufferedReader = new BufferedReader(read);                        
                            log.error("已找到文件正在读取文件");
                            while((lineTxt = bufferedReader.readLine()) != null){
                                System.out.println(lineTxt);
                                //将读取到的文件反馈给客户端
                                pw.println(lineTxt);
                                pw.flush();
                     }                            
                     read.close();
                }else{
                    log.error("没有找到指定路径的文件");
                    System.out.println("找不到指定的文件");
                }
                
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                try{
                    //关闭输入输出流以及socket
                    br.close();
                    pw.close();
                    socket.close();
                    serverSocket.close();
                }catch(Exception e2){
                    
                }
            }
            
        }
    
        
    }

    创建完服务器端之后,就需要创建与之通信的客户端程序

        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Socket socket =null;
            BufferedReader br =null;
            PrintWriter pw=null;
            try {
                //与客户端进行连接,这里的两个参数分别是服务器端的IP地址,以及服务器发时候给出的监听端口号
                socket=new Socket("127.0.0.1",6666);
                System.out.println("服务器连接成功");
                String path="C:/Users/lenovo/Desktop/新建文本文档.txt";
                //用于接收服务器返回的数据
                br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
                //用于向服务器传递数据 
                pw=new PrintWriter(socket.getOutputStream());
                //此处直接将绝对路径传递给服务器端
                pw.println(path);
                pw.flush();
                //此处随时读取服务器端返回的数据
                while(true){
                    //String receive=br.readLine();                
                    String receive=br.readLine();
                    System.out.println(receive);
                    if(receive==null){
                        System.out.println("接收返回数据完成");
                        break;
                    }
                }            
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                try{
                    pw.close();
                    br.close();
                    socket.close();
                }catch(IOException e){
                    
                }
            }
        }
    socket客户端
  • 相关阅读:
    baidu 地图 鼠标移上显示标签 鼠标离开隐藏标签
    ci框架 用框架自带db 添加括号,比如 like 等等左右添加括号 解决办法
    layDate 闪现 循环一个以上会闪现
    typescript定义函数类型
    typescript中的类与接口的关系
    typescript中的类
    typescript中的接口
    mac 上配置 ssh 免密登录服务器 【非常简单】
    Go语言中的map(十一)
    Go语言中的切片(十)
  • 原文地址:https://www.cnblogs.com/feitianshaoxai/p/6261874.html
Copyright © 2011-2022 走看看