❶ 信息有直發和伺服器轉發的嗎
有。
1、直發:在直發方式下,當發送信息時,會直接從設備通過網路傳輸到接收方的設備,這個過程不需要經過中間伺服器進行轉發,直接將信息從發送方傳遞給接收方。
2、伺服器轉發:在伺服器轉發方式下,當發送信息時,會傳輸到一個中間伺服器,再由伺服器轉發給接收方,這種方式常見於即時通訊應用程序、電子郵件等服務,其中伺服器充當了信息中轉的角色,確保信息能夠穩定地傳遞到接收方。
❷ 如何實現通過伺服器,讓兩個客戶端互相通信
如果只是兩個客戶端和一個伺服器,可通過伺服器轉蘆如發即可,兩個客戶端連接到伺服器,伺服器把從A接收到的發給B,把從B接收到的發給A即可,如果要做成多個客戶端的,則要給各個客戶端分配ID,服務端好根據各個客戶端和消息要轉發送給客戶端陪桐啟的ID來確定消息發送對輪侍象。
❸ 互聯網即時聊天工具是如何實現的
如下:
該軟體採用P2P方式,各個客戶端之間直接發消息進行會話聊天,伺服器在其中只扮演協調者的角色(混合型P2P)。
1.會話流程設計
當一個新用戶通過自己的客戶端登陸系統後,從伺服器獲取當前在線的用戶信息列表,列表信息包括了系統中每個用戶的地址。用戶就可以開始獨立工作,自主地向其他用戶發送消息,而不經過伺服器。每當有新用戶加入或在線用戶退出時,伺服器都會及時發消息通知系統中的所有其他用戶,以便它們實時地更新用戶信息列表。
按照上述思路,設計系統會話流程如下:
(1)用戶通過客戶端進入系統,向伺服器發出消息,請求登陸。
(2)伺服器收到請求後,向客戶端返回應答消息,表示同意接受該用戶加入,並順帶將自己服務線程所在的監聽埠號告訴用戶。
(3)客戶端按照伺服器應答中給出的埠號與伺服器建立穩定的連接。
(4)伺服器通過該連接將當前在線用戶的列表信息傳給新加入的客戶端。
(5)客戶端獲得了在線用戶列表,就可以獨立自主地與在線的其他用戶通信了。
(6)當用戶退出系統時要及時地通知伺服器。
2.用戶管理
系統中,無論是伺服器還是客戶端都保存一份在線用戶列表,客戶端的用戶表在一開始登陸時從伺服器索取獲得。在程序運行的過程中,伺服器負責實時地將系統內用戶的變動情況及時地通知在線的每個成員用戶。
新用戶登錄時,伺服器將用戶表傳給他,同時向系統內每個成員廣播「login」消息,各成員收到後更新自己的用戶表。
同樣,在有用戶退出系統時,伺服器也會及時地將這一消息傳給各個用戶,當然這也就要求每個用戶在自己想要退出之前,必須要先告訴伺服器。
3.協議設計
3.1客戶端與伺服器會話
(1)登陸過程。
客戶端用匿名UDP向伺服器發送消息:
login,username,localIPEndPoint
消息內容包括3個欄位,各欄位之間用「,」分隔:「login」表示請求登陸;「username」為用戶名;「localIPEndPoint」是客戶端本地地址。
伺服器收到後以匿名UDP返回如下消息:
Accept,port
其中,「Accept」表示伺服器接受了請求;「port」是服務所在埠,服務線程在這個埠上監聽可能的客戶連接,該連接使用同步的TCP。
連上伺服器,獲取用戶列表:
客戶端從上一會話的「port」欄位的值服務所在埠,於是向埠發起TCP連接,向伺服器索取在線的用戶列表,伺服器接受連接後將用戶列別傳輸給客戶端。
用戶列表格式如下:
username1,IPEndPoint1;username2,IPEndPoint2;.....;end
username1,username2.....為用戶名,IPEndPoint1,IPEndPoint2....為它們對應的端點。每個用戶的信息都有個「用戶名+端點」組成,用戶信息之間以「;」隔開,整個用戶列表以「end」結尾。
3.1伺服器協調管理用戶
(1)新用戶加入通知。
由於系統中已存在的每個用戶都有一份當前用戶表,因此當有新成員加入時,伺服器無需重復給系統中的每個成員再傳送用戶表,只要將新加入成員的信息告訴系統內的其他用戶,再由他們各自更新自己的用戶表就行了。
伺服器向系統內用戶廣播發送如下消息:
端點欄位寫為「remoteIPEndPoint」,表示是遠程某個用戶終端登陸了,本地客戶線程據此更新用戶列表。其實,在這個過程中,伺服器只是將受到的「login」消息簡單地轉發而已。
(2)用戶退出。
與新成員加入時一樣,伺服器將用戶退出的消息直接進行廣播轉發:
logout,username,remoteIPEndPoint
其中,「remoteIPEndPoint」為退出系統的遠程用戶終端的端點地址。
3.1用戶終端之間聊天
用戶聊天時,他們各自的客戶端之間是以P2P方式工作的,彼此地位對等,獨立,不與伺服器發生直接聯系。
4.系統實現
4.1服務線程
系統運行後,先有伺服器啟動服務線程,只需單擊「啟動」按鈕即可。
即時聊天軟體可以在兩名或多名用戶之間傳遞即時消息的網路軟體,大部分的即時聊天軟體都可以顯示聯絡人名單,並能顯示聯絡人是否在線。使用者發出的每一句話都回即時顯示在雙方的螢幕上。