クライアント側とサーバ側の通信(Socketプログラミング)


Socketプログラミング
このブログの出所
  • 自分はずっとネットのプログラミングのこの知识を掌握したのはまあまあだと思って、今日突然クライアントとサーバーの端の通信のこの1枚の知识の応用に関连して、自分がまだそんなにこの1枚を熟知していないことを発见して、长い间いじって、だからこのブログを通じて(通って)记录してみたいと思って、更に正しい友达に少し助けを与えることができることを望みます
  • くだらないことは言わないで,直接コードをつけなさい.
    クライアントのコードは次のとおりです.
    package org.wrh.socketserver;
    
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.Socket;
    
    public class MyClient {
    
        public static void main(String[] args) throws Exception {
            //   :     Socket
            Socket s=new Socket("192.168.1.107",4567);
            //   :              
            FileInputStream fis=new FileInputStream("d:\\100.txt");
            //   :  Socket   
            OutputStream os=s.getOutputStream();
    
            byte[] buf=new byte[1024];
            int len;
            while((len=fis.read(buf))!=-1){
                os.write(buf, 0, len);
    
            }
            //          
            os.flush();
            //     ,          
            s.shutdownOutput();
    
            //             
            InputStream is=s.getInputStream();
            byte[] buf_in=new byte[1024];
            int len_in=is.read(buf_in);
            System.out.println(new String(buf_in,0,len_in));
    
    
            fis.close();
            os.close();
            is.close();
            s.close();
    
        }
    
    }
    

    サーバ側のコードは次のとおりです.
    package org.wrh.socketserver;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class MyServer {
    
        public static void main(String[] args) throws Exception {
            //   :      Socket
            ServerSocket ss=new ServerSocket(4567);
            //   :     
            Socket socket=ss.accept();
            /* *       ip   * */
            String ip=socket.getInetAddress().getHostAddress();
            System.out.println(ip+"....connected");
            //   :  Socket    ,              
            InputStream is=socket.getInputStream();
    
            /* *    ,            * */
            File dir=new File("d:\\wu");
            if(!dir.exists()){
                dir.mkdirs();
    
            }
            File file=new File(dir,ip+".txt");
            FileOutputStream fos=new FileOutputStream(file);
    
    
            byte[] buf=new byte[1024];
            int len=0;
            while((len=is.read(buf))!=-1){
                fos.write(buf, 0, len);
    
            }
            fos.flush();
    
            //          
            OutputStream os=socket.getOutputStream();
            os.write("    ".getBytes());
    
            //             
            fos.close();
            is.close();
            os.close();
            socket.close();
            ss.close();
    
    
    
        }
    
    }
    

    上のコードの注釈は詳しく書いてありますが、ここでは説明しません.
    まとめ
  • ここで注意したいのは、上のコードの流れは簡単だが、みんながコードを叩かなければ、あまり上手に身につけることはできない.以前の私のように自分が身につけたと思っていたが、最後に自分が応用しようとしたとき、まだ身につけていないことに気づいた.
  • 要するに:実践に着手して、実践に着手して、実践に着手して、実践に着手して、重要な話は4回言って、4回言って、ハハハ