復習13.ネットワークプログラミング

2517 ワード

C/S Client/Serverとはクライアントとサーバー構造作成プログラムQQ迅雷などのソフトウェアB/S Brower/Serverブラウザプログラムがデータベースサーバーに接続することを指す.
ネットワーク通信プロトコル:TCP/IPインターネット相互接続プロトコルCMD:ipconfigが本機IPを検索する
ポート番号重複不可論理ポートソフトウェアクエリーポート番号1システム自動割当2プロアクティブリクエスト
範囲0-65535 1024間システムポートで使用できないmysql:3606 Oracle:1521 Tomcat:8080
サーバ:ストリームがないクライアントのインスタンスは、クライアントのIOストリームとクライアントを使用してインタラクティブになります.
ソケット:IPアドレスとポート番号を含むネットワーク単位クライアントとサービス側のインタラクションSocketで提供されているネットワークストリームを使用してサーバ側を自分で作成することはできません.複数のクライアントとサービス側のインタラクション(マルチスレッドテクノロジーを使用)
htmlサーバ:
/**
 * @ClssName HtmlServer
 * @Autor Yu
 * @Description TODO
 * @Date 2019/3/15 16:35
 * Version 1.0
 * 172.20.35.60
 */
public class HtmlServer {
    public static void main(String[] args) throws IOException {
//               
        ServerSocket serverSocket = new ServerSocket(10003);
//                   html                       
//                                      
        while (true) {
//           
            Socket socket = serverSocket.accept();

            new Thread(()-> {
                    try {
                        InputStream is = socket.getInputStream();
                        BufferedReader br = new BufferedReader(new InputStreamReader(is));
//                   GET /net/index.html HTTP/1.1
                        String line = br.readLine();
//               
                        String[] s = line.split(" ");
//              /  
                        String htmlPath = s[1].substring(1);
//                        html  
                        FileInputStream fis = new FileInputStream(htmlPath);
//                 
                        OutputStream os = socket.getOutputStream();
//                         
                        os.write("HTTP/1.1 200 OK".getBytes());
                        os.write("Content-Type:text/html\r
".getBytes()); os.write("\r
".getBytes());// // int len = 0; byte[] bytes = new byte[1024]; while ((len = fis.read(bytes)) != -1) { os.write(bytes, 0, len); } // fis.close(); // socket.close(); } catch (IOException e) { e.printStackTrace(); } }).start(); } } }