blogger

点滴记忆

使用emlog搭建的站点

文章102

评论3

Java网络编程Socket
1、Server端
package com.bbs2018.server;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

//https://blog.csdn.net/zqq3436/article/details/80306812
public class Server {

    public static void main(String[] args) {
        ServerSocket server = null;
        Socket socket = null;
        String basePath = "E:\\webapps";
        try {
            server = new ServerSocket(8080);
            System.out.println("服务器已启动....");
            while(true) {
                socket = server.accept();
                //System.out.println("123");
                service(socket.getInputStream(), socket.getOutputStream(), basePath);
            }
        } catch(IOException e) {
            e.printStackTrace();
        }
    }

    private static void service(InputStream in, OutputStream out, String basePath) throws IOException {
        //读取本地index.html文件的流对象
        BufferedReader br = null;

        try {
            //1、接收并解析客户端发来的请求信息
            int len = in.available();
            //System.out.println(len);
            byte[] buffer = new byte[len];
            in.read(buffer);//以上三行,得到客户端的请求信息
            String request = new String(buffer);

            //2、得到客户端想要的文件路径,从本地系统,读取该文件
            File reqFile = new File(basePath, request);
            //判断请求文件是否存在。
            /*if (!reqFile.exists()) {
                //System.out.println("该文件不存在!");
                return;
            }*/

            //3、将读取的信息。发送给客户端
            br = new BufferedReader(new FileReader(reqFile));
            //边读取index.html文件,边向客户端发送
            String line = null;
            while((line = br.readLine()) != null) {
                out.write((line + "\r\n").getBytes());
            }
        } catch(FileNotFoundException e) {
            out.write("404".getBytes());
            out.flush();
        } finally {
            if (out != null) {
                out.close();
            }
            if (in != null) {
                in.close();
            }
            if (br != null) {
                br.close();
            }
        }
    }

}

2、Client端
package com.bbs2018.client;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

//https://blog.csdn.net/zqq3436/article/details/80306812
public class Client {
    public static void main(String[] args) {
        Socket client = null;
        try {
            //1、连接服务器
            client = new Socket("127.0.0.1", 8080);

            //2、向服务器发送请求信息
            OutputStream out = client.getOutputStream();
            out.write("\\hello\\index.html".getBytes());
            out.flush();//刷新给服务器端文件路径

            Thread.sleep(1000);//此处休眠很重要
            //3、接收服务器发送的信息,并打印输出到控制台
            InputStream in = client.getInputStream();
            //int len = in.available();
            byte[] buffer = new byte[1024];
            int len = -1;
            while((len = in.read(buffer)) != -1) {
                System.out.println(new String(buffer, 0, len));
            }


        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } finally {
            if (client != null) {
                try {
                    client.close();
                } catch(IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}
评论(0)

© 2018  点滴记忆  · emlog
  Design by 往记