IP
端口
端口表示计算机上的一个程序的进程
不同的进程有不同的端口号!用来区分软件
被规定0-65535
- TCP UDP:65535*2tcp:80,udp:80吗,单个协议下,端口号不能中突
- 端口分类
- 公有端口0-1023
- HTTP:80
- HIPS: 443
- FTP: 21
- Telent 23
- 程序注册端口:1024~49151,分配用户或者程序
- Tomcat: 8080
- MYSQL: 3306
- Oracle: 152
- 动态、私有:49152~65535
- 公有端口0-1023
netstat-ano#查看所有的端口netstat- ano findstr"5900"#查看指定的端口tasklist findstr"8696"#查看指定端口的进程Ctrl+ shift+ ESC
JAVA ServerSocket
package server;import java.io.*;import java.net.*;public class HTTPServer{public static void main(String args[]) {int port = 8080;ServerSocket serverSocket;try{serverSocket = new ServerSocket(port);System.out.println("服务器正在监听端口:"+ serverSocket.getLocalPort());while(true) { //服务器在一个无限循环中不断接收来自客户的TCP连接请求try{//等待客户的TCP连接请求final Socket socket = serverSocket.accept();System.out.println("建立了与客户的一个新的TCP连接,"+"该客户的地址为:"+socket.getInetAddress()+":" + socket.getPort());service(socket); //响应客户请求}catch(Exception e){System.out.println("客户端请求的资源不存在");}} //#while}catch (Exception e) {e.printStackTrace();}}/** 响应客户的HTTP请求 */public static void service(Socket socket)throws Exception{/*读取HTTP请求信息*/InputStream socketIn=socket.getInputStream(); //获得输入流Thread.sleep(500); //睡眠500毫秒,等待HTTP请求int size=socketIn.available();byte[] buffer=new byte[size];socketIn.read(buffer);String request=new String(buffer);System.out.println(request); //打印HTTP请求数据/*解析HTTP请求*///获得HTTP请求的第一行int endIndex=request.indexOf("\r\n");if(endIndex==-1)endIndex=request.length();String firstLineOfRequest=request.substring(0,endIndex);//解析HTTP请求的第一行String[] parts=firstLineOfRequest.split(" ");String uri="";if(parts.length>=2)uri=parts[1]; //获得HTTP请求中的uri/*决定HTTP响应正文的类型,此处作了简化处理*/String contentType;if(uri.indexOf("html")!=-1 || uri.indexOf("htm")!=-1)contentType="text/html";else if(uri.indexOf("jpg")!=-1 || uri.indexOf("jpeg")!=-1)contentType="image/jpeg";else if(uri.indexOf("gif")!=-1)contentType="image/gif";elsecontentType="application/octet-stream"; //字节流类型/*创建HTTP响应结果 *///HTTP响应的第一行String responseFirstLine="HTTP/1.1 200 OK\r\n";//HTTP响应头String responseHeader="Content-Type:"+contentType+"\r\n\r\n";//获得读取响应正文数据的输入流InputStream in=HTTPServer.class.getResourceAsStream("root/"+uri);/*发送HTTP响应结果 */OutputStream socketOut=socket.getOutputStream(); //获得输出流//发送HTTP响应的第一行socketOut.write(responseFirstLine.getBytes());//发送HTTP响应的头socketOut.write(responseHeader.getBytes());//发送HTTP响应的正文int len=0;buffer=new byte[128];while((len=in.read(buffer))!=-1)socketOut.write(buffer,0,len);Thread.sleep(1000); //睡眠1秒,等待客户接收HTTP响应结果socket.close(); //关闭TCP连接}}
tomcat
直接使用tomcat
idea使用tomcat
新建JAVAEE模块
或者

