天天看點

Java程式設計筆記之網絡程式設計1

1.什麼是計算機網絡

       把分布在不同地理區域内的計算機與專門的外部裝置用通信聯絡連接配接在一起,組成一個功能強的,規模大的網絡系統,可以友善的傳輸資訊,共享資料。

2.常見的網絡程式設計方式

ISAPI、CGI、WinInet、Winsock、 

1)  ISAPI主要是開發基于浏覽器用戶端與伺服器端程式。效率比CGI方式高,而且也擴充了CGI沒有的一些功能。(基于TCP/IP模型中的應用層)

2)  CGI主要是開發基于浏覽器用戶端與伺服器端程式。(基于TCP/IP模型中的應用層)

3)  WinInet主要是開發用戶端程式。(基于TCP/IP模型中的應用層)

4)  Winsock主要是基于socket來開發用戶端與伺服器端程式。(基于TCP/IP模型中的各層)要想開發低層協定的程式的話就要了解協定的封包格式。

3.TCP/IP:傳輸控制協定/網際協定

四層:應用層(應用層,表示層,會話層),傳輸層,網際網路層,網絡接口層(實體層,資料鍊路層)

什麼是三次握手:

(1)用戶端發送一個帶SYN标志的TCP封包到伺服器。這是三次握手過程中的封包1。

(2) 伺服器端回應用戶端的,這是三次握手中的第2個封包,這個封包同時帶ACK标志和SYN标志。是以它表示對剛才用戶端SYN封包的回應;同時又标志SYN給用戶端,詢問用戶端是否準備好進行資料通訊。 

(3) 客戶必須再次回應服務段一個ACK封包,這是封包段3

4.IP位址:32位二進制長度表示

5.Socket(套接字):兩個應用程式之間傳輸資料,每一端成為一個Socket,通常實作Clinet-server通信,建立連接配接時所需的尋址資訊為遠端計算機的IP位址和端口号。

代碼執行個體---網絡程式設計步驟

1.

建立 socket; 打開連接配接到 socket 的輸入 / 輸出流; 按照一定的協定對 socket 進行讀 / 寫操作; 關閉 socket;

服務端

class TcpServer{

      public static void main(String args[]){

             ServerSocket server=new ServerSocket(8888);//建立端口号

             while(true){

                      Socket  s=server.accept();

                       BufferedWriter   bw = new BufferedWriter ( newOutputStreamWriter(s1.getOutputStream()));//建立用戶端輸入輸出流

                       bw.write("nihaoa");

                       bw.close();

                       s.close();

            }

     }

}

伺服器

public class TCPClient {  //TCP Client

    public staticvoid main(String[] args) {

        try {

            Sockets = new Socket("127.0.0.1", 8888);

            BufferedReaderbr = new BufferedReader( new InputStreamReader(s.getInputStream()));

            Stringstr = br.readLine();

            System.out.println("伺服器說:" + str);

            s.close();

        } catch (UnknownHostExceptione) {

            System.err.println("伺服器連接配接失敗!");

            e.printStackTrace();

        } catch (IOExceptione) {

            e.printStackTrace();

        }

    }

}