簡單的服務器與客戶端相連接
- 理解TCP/IP協議
對于TCP/IP協議,百度百科對它的定義用于多個網路之間相互傳遞資料資訊的協議簇 現如今幾乎所有電腦進行通信所遵循的一個協議
那么如何來理解(TCP/IP)協議?
就我個人而言,我對協議的理解就是:
共識就是我們所共同遵循的一套準則,就是類似于那種諜戰片里面的特務對接說暗號一樣,他又一個規定的格式與說法,人與人之間、者說機器與機器之間要進行互動,交流、協同合作時,就需要達成一個交流的共識!
比如中國人與人中國之間通過講普通話來表達雙方的想法和意愿,以達到協作的目的,那么依次可知,機器之間的相互協同也是需要一個共識而如今這個TCP/IP協議就是這個共識,
大致流程就是,
我通過網路來獲取我想要聯系的機器的IP地址(可以在電腦上查,搜索網路屬性,IPv4地址),與它建立起連接連接成功后就相當于我這臺機器與另一臺機器接起了一條無形的資料傳輸線路對方的資料可以通過這條線路以位元組的形式發送給我,我的資料也可以通過這條線路以位元組的形式發送給對方,
一句話來講:TCP/IP協議就是計算機之間進行互動、協作所共同遵循的一個共識
2、服務器與客戶端
服務器:(百度百科的定義是)服務器也是計算機的一種,比普通計算機運行更快、負載更高、價格更貴,服務器在網路中為其它客戶機(如PC機、智能手機、ATM等終端甚至是火車系統等大型設備)提供計算或者應用服務,服務器具有高速的CPU運算能力、長時間的可靠運行、強大的I/O外部資料吞吐能力以及更好的擴展性,根據服務器所提供的服務,一般來說服務器都具備承擔回應服務請求、承擔服務、保障服務的能力,服務器作為電子設備,其內部的結構十分的復雜,但與普通的計算機內部結構相差不大,如:cpu、硬碟、記憶體,系統、系統總線等,(是具有很強大的運算能力,以及資料吞吐能力,能為客戶機(即用戶端)提供所需的服務,并能長時間保障服務的一種計算機)
客戶端:客戶端(Client)或稱為用戶端,是指與服務器相對應,為客戶提供本地服務的程式,除了一些只在本地運行的應用程式之外,一般安裝在普通的客戶機上,需要與服務端互相配合運行 ,(是一個為用戶提供直接服務,并且與服務器互相合作,反饋資訊的東東)
有了這些基礎知識:那么我們來用JAVA(用其他語言實作的還正在研究哈哈)實作一個簡單的服務器與客戶端相連接的功能
實作步驟:
創建一個服務器(Java.net.SeverSocket)–>等待客戶機的接入–>客戶機接入后(即客戶機與服務器之間建立了一個連接)這樣實作了一個客戶端和服務器的連接!
至于后續的資料傳輸,則只需要在連接成功后,獲取客戶端的輸入輸出流,通過輸入輸出流在客戶端與服務器之間進行一個資料傳輸就行了!
代碼部分:
public class Sever(){
//創建服務器
/**
*@parm port(這個port其實是一個標簽的意思,就是在特定的IP地址下、創建的標示為port的服務器)
*/
public void setSever(int port){
try{
//創建服務器 java.net.SeverSocket
java.net.SeverSocket sever=new ServerSocket(port);
//輸出服務器創建成功
System.out.println("服務器創建成功!");
//等待客戶機的接入
java.net.Socket client=sever.accept();//Line1
//如果沒有客戶機接入的的話,他會一直卡在Line1,不會執行下面的代碼
//如果有客戶機連接上來了就輸出有客戶機連接成功了
System.out.println("有客戶端連接進來了!");
}catch(Exception ed){
System.out.println("服務器創建失敗!");
ed.printStackTrace();
}
}
//主函式
public static void main(String[] args){
//創建服務器
Sever ss=new Sever();
ss.setSever(9999);
}
}
然后是創建一個客戶端,去連接服務器
//客戶端
public class Client(){
//連接服務器
public void connectSever(){
try{
//連接服務器 127.0.0.1是每臺電腦固定的本機IP地址,9999是剛剛創建的服務器的標識
java.net.Socket client=new Socket("127.0.0.1",9999);
System.out.println("連接服務器成功!");
}catch(Exception ed){
System.out.println("連接服務器失敗!");
ed.printStackTrace();
}
}
//主函式
public static void main(String[] args){
Client cli=new Client();
cli.connectSever();
}
}
這樣就實作了一個簡單的服務器連接了!接下來就可以在服務器之間進行資料交換了,下一篇博客我將為大家分享一下我的一個簡單的網路實時畫圖板,然后進一步實作一個視頻通信,最后實作一個類似于騰訊會議的小界面,有興趣的小伙伴可以一起來實作啊!
我的QQ是:2058084624
我的郵箱是:2058084624@qq.com
我的微信是:18975010038
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/252601.html
標籤:其他
