① java socket 客戶端是如何向伺服器端發送消息的
伺服器端和客戶端都是通過SOCKET來進行通信的,首先產生一個 socket實例,通過這個實例,伺服器端調用accept這個方法接收來自客戶端發送的信息.但是在產生socket實例的時候必須初始化一個埠.用來負責接受客戶端的請求!
客戶端要給伺服器發送消息也必須產生一個socket實例,初始化的時候必須指定伺服器的IP地址,並且指定服務接收的埠號,這樣客戶端才能找到伺服器要接收的地方,找到地方就可以發送過去了。和你寫信一樣。找到地址
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream());
BufferedReader wt = new BufferedReader(new InputStreamReader(System.in));
這個只是用來獲取一個從鍵盤的一個流.傳送給伺服器端的數據都是通過流來表示的。意思是是鍵盤輸入的一個位元組轉化成字元流.並輸出或者寫入!
② 如何向伺服器發出請求檢測與其他控制設備tcp通信
一,網路編程中兩個主要的問題
一個是如何准確的定位網路上一台或多台主機,另一個就是找到主機後如何可靠高效的進行數據傳輸。
在TCP/IP協議中IP層主要負責網路主機的定位,數據傳輸的路由,由IP地址可以唯一地確定Internet上的一台主機。
而TCP層則提供面向應用的可靠(tcp)的或非可靠(UDP)的數據傳輸機制,這是網路編程的主要對象,一般不需要關心IP層是如何處理數據的。
目前較為流行的網路編程模型是客戶機/伺服器(C/S)結構。即通信雙方一方作為伺服器等待客戶提出請求並予以響應。客戶則在需要服務時向伺服器提 出申請。伺服器一般作為守護進程始終運行,監聽網路埠,一旦有客戶請求,就會啟動一個服務進程來響應該客戶,同時自己繼續監聽服務埠,使後來的客戶也 能及時得到服務。
二,兩類傳輸協議:TCP;UDP
TCP是Tranfer Control Protocol的 簡稱,是一種面向連接的保證可靠傳輸的協議。通過TCP協議傳輸,得到的是一個順序的無差錯的數據流。發送方和接收方的成對的兩個socket之間必須建 立連接,以便在TCP協議的基礎上進行通信,當一個socket(通常都是server socket)等待建立連接時,另一個socket可以要求進行連接,一旦這兩個socket連接起來,它們就可以進行雙向數據傳輸,雙方都可以進行發送 或接收操作。
UDP是User Datagram Protocol的簡稱,是一種無連接的協議,每個數據報都是一個獨立的信息,包括完整的源地址或目的地址,它在網路上以任何可能的路徑傳往目的地,因此能否到達目的地,到達目的地的時間以及內容的正確性都是不能被保證的。
比較:
UDP:1,每個數據報中都給出了完整的地址信息,因此無需要建立發送方和接收方的連接。
2,UDP傳輸數據時是有大小限制的,每個被傳輸的數據報必須限定在64KB之內。
3,UDP是一個不可靠的協議,發送方所發送的數據報並不一定以相同的次序到達接收方
TCP:1,面向連接的協議,在socket之間進行數據傳輸之前必然要建立連接,所以在TCP中需要連接
時間。
2,TCP傳輸數據大小限制,一旦連接建立起來,雙方的socket就可以按統一的格式傳輸大的
數據。
3,TCP是一個可靠的協議,它確保接收方完全正確地獲取發送方所發送的全部數據。
應用:
1,TCP在網路通信上有極強的生命力,例如遠程連接(Telnet)和文件傳輸(FTP)都需要不定長度的數據被可靠地傳輸。但是可靠的傳輸是要付出代價的,對數據內容正確性的檢驗必然佔用計算機的處理時間和網路的帶寬,因此TCP傳輸的效率不如UDP高。
2,UDP操作簡單,而且僅需要較少的監護,因此通常用於區域網高可靠性的分散系統中client/server應用程序。例如視頻會議系統,並不要求音頻視頻數據絕對的正確,只要保證連貫性就可以了,這種情況下顯然使用UDP會更合理一些。
③ 問一下,怎麼能讓伺服器主動向客戶端發送數據
在HTTP中有一種長連接技術,可以模仿Socket通信實現伺服器端主動向客戶端瀏覽器發送數據。它的原理其實很簡單:當伺服器端接到客戶端的詢問請求後,將整個HTTP連接置於阻塞狀態,即什麼也不做,也不發送數據,也不關掉連接。直到客戶端需要將最新數據返回給客戶端時,將數據通過這個HTTP連接返回回去,並且關閉連接。這樣,客戶端看到的結果,就似乎是伺服器端主動向客戶端瀏覽器發送數據了。但是,關掉連接以後怎麼辦呢?這時候,可以通過客戶端JS代碼中的定時器,再次發起請求。這樣,只有內容發生了變化,才會進行一次HTTP會話,所以整體效率比輪詢方式要高出很多,同時還有了更好的及時性。
④ 如何在伺服器端向客戶端發送信息
在「Message」後的框中輸入欲發送信息的標題,其下的框中輸入正文。如果有必要,選中「URL Button」(網址按鈕),在其後的框中輸入網站說明,其下的框中輸入網站地址。然後,再選是將此信息發送給「Offline Or Online Users」(所有在線和離線的用戶),還是只將它發送給「Online Users」(在線用戶)。最後按「Broadcast Message」將信息發送出去。「Server Messages History」為以前所發送的所有信息的歷史記錄,選中相應記錄後再按「Delete」按鈕即可刪除它,按「Copy」鍵可將它再復制到上面相應欄目中,以便再次發送。 伺服器端的信息發送後,客戶端就會收到信息。
摘要 1.連接:向伺服器發送請求之前需要建立連接,通過DNS伺服器創建套接字、建立連接、收發數據等操作查詢ip地址,再建立socket連接。
⑥ java socket伺服器怎麼給客戶端發信息
伺服器端和客戶端都是通過SOCKET來進行通信的,首先產生一個
socket實例,通過這個實例,伺服器端調用accept這個方法接收來自客戶端發送的信息.但是在產生socket實例的時候必須初始化一個埠.用來負責接受客戶端的請求!
客戶端要給伺服器發送消息也必須產生一個socket實例,初始化的時候必須指定伺服器的IP地址,並且指定服務接收的埠號,這樣客戶端才能找到伺服器要接收的地方,找到地方就可以發送過去了。和你寫信一樣。找到地址
BufferedReader
in
=
new
BufferedReader(new
InputStreamReader(socket.getInputStream()));
PrintWriter
out
=
new
PrintWriter(socket.getOutputStream());
BufferedReader
wt
=
new
BufferedReader(new
InputStreamReader(System.in));
這個只是用來獲取一個從鍵盤的一個流.傳送給伺服器端的數據都是通過流來表示的。意思是是鍵盤輸入的一個位元組轉化成字元流.並輸出或者寫入!
⑦ C語言Socket伺服器怎麼給客戶端發消息
socket
伺服器給指定的客戶端發消息該怎麼處理(tcp)(c語言)
多個客戶端之間進行通訊,通過伺服器轉發的形式,現在客戶端1請求向客戶端2發送消息,先把消息發送到伺服器,伺服器怎麼才能把消息轉發到客戶端2而不是轉發給客戶端3或者他自己。
⑧ Web伺服器的工作原理: 談談客戶端如何向Web伺服器提出請求,Web伺服器怎樣響應請求,提供服務
一般是
客戶端發送http請求(tcp 80)到伺服器端,tcp連接建立之後,通過http的動作get獲得頁面信息
具體不是一句兩句能說明白的
自己抓包看吧
⑨ 伺服器端和客戶端哪個發送文件
服務端和客戶端可以相互發。但是一般客戶端是人來操作的,伺服器端直接響應。所以客戶端發請求到伺服器,指定要什麼東西,然後伺服器可以判斷後給出相關內容。
⑩ 如何給http伺服器發送post請求
1、HTTP請求概述
在前面有一篇文章對HTTP協議有詳細的描述,這里就不再過多的做說明,只是簡單的作為這篇文章的引子。
HTTP協議又被稱為超文本傳輸協議,它的的設計目的是保證客戶機與伺服器之間的通信。HTTP 的工作方式是客戶端與伺服器之間的請求-應答協議。在客戶端和伺服器之間進行請求-響應時,有兩個最基本的請求方式:GET 和 POST。
其中,GET請求表示從指定的資源請求數據,POST請求表示向指定的資源提交要被處理的數據。
2、HTTP請求格式
在HTTP請求中,首先是請求行,注意這里的請求行一定要放在最前面;其次,是請求頭,英文表示為header;然後會空一行,緊接著就可以是請求的具體內容了,一般稱之為請求體,request-body。給出一個圖示如下:
3、GET請求與POST請求對比
GET請求與POST請求有一些異同點,主要有以下幾點問題:
(1)、GET請求和POST請求都是客戶端與伺服器之間交互,請求--應答模式的協議
(2)、GET請求是通過URL直接請求數據,數據信息可以在URL中直接看到,比如瀏覽器訪問;而POST請求是放在請求頭中的,我們是無法直接看到的;
(3)、GET提交有數據大小的限制,一般是不超過1024個位元組,而這種說法也不完全准確,HTTP協議並沒有設定URL位元組長度的上限,而是瀏
覽器做了些處理,所以長度依據瀏覽器的不同有所不同;POST請求在HTTP協議中也沒有做說明,一般來說是沒有設置限制的,但是實際上瀏覽器也有默認
值。總體來說,少量的數據使用GET,大量的數據使用POST。
(4)、GET請求因為數據參數是暴露在URL中的,所以安全性比較低,比如密碼是不能暴露的,就不能使用GET請求;POST請求中,請求參數信息是放在請求頭的,所以安全性較高,可以使用。在實際中,涉及到登錄操作的時候,盡量使用HTTPS請求,安全性更好。
下面給出一副圖示,說明一下HTTP中GET與POST請求的差異:
4、使用步驟:
在Android中使用HTTP請求,主要步驟如下:
(1)、實例化一個HttpGet(或HttpPost)對象,將請求的URL地址通過構造方法傳給HttpGet(或HttpPost)對象;
(2)、使用DefaultHttpClient類的execute方法發送GET或POST 請求,並返回HttpResponse對象;
(3)、通過HttpResponse介面的getEntity方法返回響應信息。
5、實例代碼
給出一個在實際應用中的一個POST請求的代碼片段:
[java] view plain print?
params = new LinkedList();
params.add(new BasicNameValuePair("param1", "Post方法"));
params.add(new BasicNameValuePair("param2", "第二個參數"));
try {
HttpPost post = new HttpPost(baseUrl);
post.setEntity(new UrlEncodedFormEntity(params, "utf-8")); //將參數填入POST Entity中
HttpResponse response = httpClient.execute(post); //執行POST方法
resCode = response.getStatusLine().getStatusCode()); //獲取響應碼
result = EntityUtils.toString(response.getEntity(), "utf-8")); //獲取響應內容
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
6、HTTP請求狀態碼意義
HTTP請求中,主要有這樣幾個類型:1XX:表示信息提示,2XX:表示成功,3XX:表示重定向,4XX:表示客戶端請求錯誤,5XX:表示伺服器錯誤。常見的幾個HTTP請求狀態碼意義如下:
200 OK: 找到了該資源,並且一切正常。
304 NOT MODIFIED: 該資源在上次請求之後沒有任何修改。這通常用於瀏覽器的緩存機制。
401 UNAUTHORIZED: 客戶端無權訪問該資源。這通常會使得瀏覽器要求用戶輸入用戶名和密碼,以登錄到伺服器。
403 FORBIDDEN: 客戶端未能獲得授權。這通常是在401之後輸入了不正確的用戶名或密碼。
404 NOT FOUND: 在指定的位置不存在所申請的資源。
505 NOT SUPPORTED:伺服器不支持請求中所指明的HTTP版本