在學習tcp協議之前,需要了解網路程式設計中的幾個基本概念。
public
static
void
main(string args) throws exception
public
static
void
main(string args) throws exception
計算機能夠接受通訊實體請求的類是serversocket,serversocket用來監聽客戶端對應的socket,一般我們在while(true)裡使用serversocket不斷的獲取socket,如果沒用連線它會處於等待狀態。
常用api:
//1.建立socketserver,監聽3000埠
serversocket ss = new serversocket(30000) ;
while(true)
客戶端通常使用socket的構造器連線指定伺服器
建構函式如下:
public socket(string host, int port)
使用如下:
//1.建立socket
socket s = new socket("127.0.0.1"
,30000) ;
bufferedreader br = new bufferedreader(new inputstreamreader(s.getinputstream())) ;
string line = br.readline();
system.out.println("來自服務端:" + line );
s.close() ;
上面的127.0.0.1是連線本地ip的。大家可以到c:\windows\system32\drivers\etc這個目錄下的host檔案中檢視到。
上面程式運首先要執行服務端,然後在執行客戶端就可以進行通訊了。
當服務端、客戶端連線到了對應的socket之後,程式就不用再區分服務端、客戶端了,兩者是通過各自的socket通訊。socket通過如下兩個api來獲取輸出流、輸入流。
public inputstream getinputstream()
public outputstream getoutputstream()
上面的client、server只是簡單的通訊,下面實現乙個包含多執行緒的socket通訊。我們在服務端建立多執行緒執行緒,每乙個socket對應乙個執行緒,這個執行緒負責讀取socket輸入流中的內容,也就是從客戶端傳送過來的資料,然後再返回給客戶端資訊表示收到了。
public
static arraylistsocketlist = new arraylist() ;
public
static
void
main(string args) throws exception
}
服務端建立乙個集合用來存放來自客戶端的socket,每當獲取乙個socket,就開始啟動乙個執行緒,該執行緒用來處理通訊業務。
class
serverthread
implements
runnable
public
void run() catch (ioexception e) }}
}public string readfromclient() catch (ioexception e)
return
null ;
}}
public
static
void
main(string args)
} catch (exception e)
}
重要的地方已經注釋,**不同,相信能看懂。這樣就完成了多執行緒的通訊了,還是和上面一樣,先執行server,再執行client,通過執行可以知道每個客戶端可以看到其它客戶端的資訊。
ok,這篇已經結束了,這篇只是簡單介紹了socket的基礎,後面會繼續詳細分析還有介紹基於udp網路程式設計。
基於tcp的基礎socket程式設計c c
c 對於網路開發的總結 2020.3.12 22 10 一,技術的應用 1,socket套接字技術。2,winapi多執行緒技術。3,對於tcp ip協議的理解。4,網路的七層模型協議。二,程式設計收發流程 1,初始化套接字型檔 函式原型 int wsastartup word wversionre...
基於TCP的socket程式設計
sockets 套接字 程式設計有三種,流式套接字 sock stream 資料報套接字 sock dgram 原始套接字 sock raw 基於 tcp的 socket 程式設計是採用的流式套接字。在這個程式中,將兩個工程新增到乙個工作區。要鏈結乙個 ws2 32.lib 的庫檔案。伺服器端程式設...
基於TCP的socket程式設計
基於tcp的socket程式設計的伺服器程式流程如下 1 建立套接字 socket 2 將套接字繫結到乙個本地位址和埠上 bind 3 將套接字設為監聽模式,準備接收客戶請求 listen 4 等待客戶請求到來,當請求到來後,接受連線請求,返回乙個新的對應於此次連線的套接字 accept 5 用返回...