前言:这是JAVA学习基础第一阶段的最后一课,内容不多,但是理解起来比较抽象,需要仔细琢磨;
一:一些网络编程的概念
1:每个端口都只有一个端口号,且端口号不能重复;
2:需要查看本机ip地址可以使用win+r调出任务管理器,输入ipconfig指令,可以查看本机的ip地址,为后续创建JAVA代码与浏览器之间的联系做好准备;
3:每个网址都对应着不同的路径,用户通过不同的路径访问就可以实现不同的功能;
二:如何通过JAVA代码实现在浏览器上创建一个端口号
1:首先需要创建一个类ServerSocket,并在()添加上你需要创建的端口号,这里需要对异常进行一个主动处理(try/catch),需要注意的是因为要让他处于一直运行状态所以后续要加入一个while循环,但是创建端口号不能放入循环体,因为只能有一个端口号不能重复创建,所以要把创建端口号这行代码放到while循环体外面;
2:在while循环体里,使用.accpet功能用于接收客户端发送的信息,因为是Socket类型的所以需要用一个Socket类型的变量去接收;
ServerSocket serverSocket= null; try { serverSocket = new ServerSocket(8081); } catch (IOException e) { e.printStackTrace(); } while (true){ try { //本地开启一个服务,得给他指名一个端口号; //接收客户端发送请求的数据; Socket socket= serverSocket.accept(); System.out.println("已经被接受了"); } catch (IOException e) { e.printStackTrace(); } }
三:如何通过JAVA代码实现在浏览器创建的端口号里输出内容
1:首先和上面一样,都是需要先创建一个端口号
2;端口号创建完成以后,调用socket.getInputstream方法,获取输入流对象接收数据
InputStream inputStream= socket.getInputStream();
3;调用socket.getOutputstream方法,进行输出操作
outputStream=socket.getOutputStream();
4;需要将字符输入流转化为字节输入流,方便读取一整行数据
//装换将字符输入流转化为字节输入流 BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream)); //通过高效输入流读取一整行数据 String dog= bufferedReader.readLine();
5;使用裁剪功能裁剪出路径,用于后续判断使用
//使用一个字符数组接收割取空格以后的数据 String[]dogs= dog.split(" "); //因为,路径在第二个,所以直接读取 String path=dogs[1];
6;默认使用这三行代码,否则会乱码,或传递不成功
// 返回的内容默认utf8(字符集编码)的数据,但是浏览器不知道 // 浏览器就会按照系统默认,中文系统编码GBK // 使用GBK的编码去解析utf8的数据 outputStream.write("HTTP/1.1 200 OK\r\n".getBytes()); outputStream.write("Content-type:text/html;charset=utf8\r\n".getBytes()); outputStream.write("\r\n".getBytes());
7;最后输出你需要打印的东西,因为要转换得在最后加上.getBytes()功能
//将字节数组转换为字符数组 outputStream.write("<h1>天气变得好坏<h1/>".getBytes());
8;最后使用.close功能关闭即可
9;可以根据访问不同路径达成打印不同东西的效果;
就是通过裁剪的路径进行一个if判断