Socket理解-代码保存(服务器代码)

    xiaoxiao2021-03-25  151

    package com.socket.test; 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.OutputStream; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket; import java.sql.ResultSet; import java.sql.SQLException; import java.util.regex.Matcher; import java.util.regex.Pattern; public class MyHttpServer3 { public static void main(String[] args) { try{ ServerSocket serverSocket=new ServerSocket(8880); while(true){ Socket clientSocket=serverSocket.accept(); InputStream inStream=clientSocket.getInputStream(); InputStreamReader inReader=new InputStreamReader(inStream); BufferedReader buffReader=new BufferedReader(inReader); String line=buffReader.readLine(); if(line==null){ buffReader.close(); inReader.close(); inStream.close(); continue; } System.out.println("客户端请求:"+line); String filename=line.split(" ")[1]; System.out.println("读取"+filename); OutputStream outStream=clientSocket.getOutputStream(); OutputStreamWriter outWriter=new OutputStreamWriter(outStream); outWriter.write("HTTP/1.1 200 OK\r\n"); outWriter.write("\r\n"); outWriter.flush(); if(filename.contains("?")){ if(filename.startsWith("/add?")){ Pattern pattern=Pattern.compile("i=(\\d+)&j=(\\d+)"); Matcher matcher=pattern.matcher(line); if (matcher.find()) { int i=Integer.parseInt(matcher.group(1)); int j=Integer.parseInt(matcher.group(2)); int r=i+j; outWriter.write("<html><head></head><body>"); outWriter.write(i+"+"+j+"="+r); outWriter.write("</body>"); } } else if(filename.startsWith("/login?")){ Pattern pattern = Pattern.compile("username=(.+?)&password=(.+?) HTTP/1.1"); Matcher matcher = pattern.matcher(line);//GET /login?username=admin&password=123 HTTP/1.1 if(matcher.find()){ String username = matcher.group(1); String password = matcher.group(2); outWriter.write("<html><head></head><body>"); if(username.equals("admin")&&password.equals("admin")){ outWriter.write("登录成功"); } else{ outWriter.write("登录失败"); } outWriter.write("</body></html"); } } else if(filename.startsWith("/showUsers")){ outWriter.write("<html><head></head><body>"); outWriter.write("<table><thead><tr><td>Id</td><td>UserName</td><td>Password</td></tr></thead>\r\n"); outWriter.write("<tbody>\r\n"); try{ ResultSet rs=JdbcUtils.executeQuery("select * from T_Users"); while(rs.next()){ int id=rs.getInt("Id"); String username=rs.getString("UserName"); String password=rs.getString("Password"); outWriter.write("<tr><td>"+id+"</td><td>"+username+"</td><td>"+password+"</td></tr>\r\n"); } }catch(SQLException e){ e.printStackTrace(); } outWriter.write("</tbody></table>\r\n"); outWriter.write("</body></html"); } } else{ File file=new File("F:\\JavaWorkspace\\MyWeb", filename); if(file.exists()&&file.isFile()){ FileInputStream fileInputStream=new FileInputStream(file); copy(fileInputStream,outStream); fileInputStream.close(); } else{ outWriter.append("没有找到"); } } outWriter.close(); outStream.close(); clientSocket.close(); } }catch(IOException e){ e.printStackTrace(); } } public static void copy(InputStream inStream,OutputStream outStream) throws IOException{ byte[] bytes=new byte[1024]; int len; while((len=inStream.read(bytes))>0){ outStream.write(bytes, 0, len); } } }
    转载请注明原文地址: https://ju.6miu.com/read-2651.html

    最新回复(0)