一、網路程式設計概述
計算機網路之間以何種規則進行通訊,就是網路模型研究問題。
網路模型一般是指osi(open system interconnection開放系統互連)七層參考模型,tcp/ip四層參考模型
主機至網路層(物理層 , 資料鏈路層) , 網際層 , 傳輸層 , 應用層(應用層 , 表示層 , 會話層)
二、協議
1.tcp/ip協議
tcp是指傳輸控制協議
ip是指網路位址協議
tcp/ip協議族按層次分別分為以下四層:應用層、傳輸層、網路層和資料鏈路層。
應用層應用層決定了向使用者提**用服務時通訊的活動
ftp(檔案傳輸協議)、 http( 超文字傳輸協議)、 ssh(遠端登入)、telnet (遠端登入)dns(網域名稱系統)都屬於該層
傳輸層傳輸層對上層應用層提供處於網路連線中兩台計算機之間的資料傳輸。
tcp(保障資料的可靠有序), udp( 不保證資料可靠性)都屬於傳輸層
網路層網路層用於處理網路上流動的資料報。該層規定了通過怎樣的路徑到達對方的計算機,並把資料傳送給對方。
ip協議屬於網路層
鏈路層鏈路層用來處理連線網路的硬體部分
2.http協議
http協議是位於應用層的協議。
2.1)請求
請求方式 資源位址 協議版本
請求首部字段(包括主機埠號)
例如:get /index.html http/1.1
host: localhost
2.2)響應
協議版本 狀態碼 狀態碼的原因短語
響應首部字段
三、使用telnet客戶端程式
a.進入控制面板,在「程式」裡找到「開啟或關閉windous功能」裡找到telnet客戶端並打勾
b.開啟cmd命令視窗
c.與伺服器端建立連線
輸入:telnet 對方ip 埠號(80)
d.以http協議傳送請求
傳送完成後需要兩個回車
e.接受返回結果
四、客戶端程式設計
1.socket程式設計
a建立scoket
socket socket = new socket(「ip位址」, 埠號);
b發資料
socket.getoutputstream();
c收資料
socket.getinputstream();
編寫乙個簡單的客戶端程式,從客戶端以http形式傳送請求,在接受資料
public class testsocket
socket.close();
}}
public class testurl
image.write(buf, 0, len);
}image.close();
connection.disconnect();
}}
五、伺服器端程式設計
a.一次只能響應乙個客戶端的程式:
public class testseversocket
}}
b.通過多執行緒,為每乙個客戶端程式都建立乙個執行緒去處理。
public class threadserversocket catch (ioexception e)
}).start();}}
private static void control(socket accept) throws ioexception
}}
c.執行緒池
executorservice service = new threadpoolexecutor(,corepoolsize maxpoolsize, keepalivetime , timeunit, timeunit.seconds,blockingqueue);
(1)corepoolsize 核心執行緒數。
(2)maxpoolsize 最大執行緒數 核心執行緒數+救急執行緒數<=最大執行緒數。
(3)keepalivetime 保持時間 如果乙個執行緒閒暇的時間超過了保持時間,那就把它**,但不會少於核心執行緒數。
(4)timeunit 時間單位。
(5)blockingqueue 阻塞佇列 當任務數超過核心執行緒數後,就把任務放入阻塞佇列排隊執行 (有界,無界)。
public static void main(string args) throws ioexception catch (ioexception e)
});}
}private static void handle(socket socket) throws ioexception
string echo = new string(buf, 0, len, "utf-8");
system.out.println(echo);
out.write(("伺服器回答:" + echo).getbytes("utf-8"));}}
}
摘 學習網路程式設計方法
網路這東西就是乙個靠實踐的東西,只靠看書是不行的。當年在學校還上過史美林教授 張公忠教授所講的計算機網路體系結構課,用的是 tanabaum寫的那本,考試還得了九十多分,可實際還是連tcp和udp有什麼區別都分不清,就是死記硬背,到畢業的時候基本上是忘光了。工作後等於重新來過。上班了要在linux做...
python學習 網路程式設計(一)
udp的接收和傳送資料 udp的傳送資料 如下 import socket def main 建立套接字 udp socket socket.socket socket.af inet,socket.sock dgram 傳送資料 send data input 請輸入您要傳送的資訊 udp ip ...
深入學習網路程式設計
目錄說明 p6 socket程式設計一 什麼是socket ipv4套接字位址結構 網路位元組序 位元組序轉換函式 位址轉換函式 套接字型別 p7 socket程式設計二 tcp客戶 服務端模型 回射客戶 伺服器 socket,bind,listen,accept,connect p8 socket...