1樓:網友
建立執行緒1,建立方法1
思路:執行緒1負責監聽port1,取客戶的即時輸入資料,並將資料寫到乙個快取中(list),然後通知方法1,方法1從快取中取資料,並寫到port2。
另乙個客戶端自己負責監聽並獲取伺服器釋出在port2的資料。
請教關於socket多個伺服器的問題
2樓:然後去遠足
兩個錯誤和一點建議。
錯誤1 是按照題主的在問題裡所描述的設計,閘道器伺服器根本沒有維持長連線的必要,只需要**訊息給業務伺服器後跟 client 的連線就可以斷開了,剩下的鎮茄隱都是業務伺服器跟 client 直接通訊了。不知題主還有什麼關於維持長連線的必要沒有在問題裡說明?
錯誤2 是如果維持長連線了,把 client 的埠號**給業務伺服器了有什麼用?client 的這個埠正在跟閘道器伺服器通訊呢,業務伺服器怎麼可能通過這個埠跟 client 建立連線?難道同乙個埠還能被多個 socket 佔用嗎?
建議 要麼改為業務伺服器不跟 client 通訊,還是經由閘道器伺服器中轉進行;要麼業務伺服器就需要跟 client 進行「打洞」(hole punching)。
先說為什麼要「打洞」。對於處在同一子網下的計算機還好說,假如 client 在子網 a 下,且 a 下有多型接入裝置(最常御廳見的就是走路由了),那麼 a 子網下的所有計算對於你的伺服器來說 ip 都是一樣的,所以你要想要穿過路由直接跟 a 子網下的某臺計算機建立連線,就必須要先「打洞納槐」。
socket通訊問題
3樓:小靖鍋鍋
因為你每次accept接受的時候,會返回乙個socket_desc也就是你的 描述符,而你每次接受訊息 用recv 或者recvfrom等等的函式的時候裡面呼叫的引數是有socket_desc 他會根據你的socket_desc來傳送,接收的。
如果是很多來通訊的話,最好使用多執行緒的方法來做伺服器,來監聽。
socket設定問題
4樓:網友
通常情況下,每當乙個客戶端傳送來連線請求時,服務端都會建立乙個新的程序/執行緒接管這個連線。
也就是說,服務端的程式只負責接受連線請求,至於資料的處理是由動態建立的程序/執行緒來處理的。
如果用這種方式,服務端和客戶端是1對1的關係,也就無需考慮「怎樣判斷出是哪乙個通訊的socket」這個問題了。
否則,乙個服務端程式處理多個客戶端請求,系統的效率必然高不了,客戶端會出現等待、甚至超時的情況。
5樓:網友
csocket的receivefrom函式引數中有返回的對方ip位址(socketaddr),哪乙個csocket返回的訊息難道不知道自己的this指標,然後去連結串列中查詢該指標不就可以了。
在socket 程式設計時如果客戶端發給伺服器端的資料太大,一次性不能傳送完,要怎麼辦??
6樓:網友
一般客戶端資料量很大時,伺服器開多執行緒接收或用udp吧。
請WOW伺服器,請推薦一個WOW伺服器
我是5區風暴之眼部落的,也是10組.你也是這個服嗎?如果不是的話推薦你到這個伺服器來,原因有這幾點 1.這個區雖然是5區最古老的伺服器之一,但人數一直不少,絡繹不絕.2.這個伺服器聯盟跟部落的數量確實差不多,這是很少見的.3.10組的戰場確實還比較有樂趣,從29到59到70全都很興盛,而且互有攻守....
為什麼一個TOMCAT伺服器只能在伺服器裡被訪問到
這種情況,只有伺服器防火牆埠沒開放。通常情況下,tomcat跑起來,本機能訪問,就表示啟動成功了。tomcat伺服器有2個,為什麼只能選其中一個 一般的 部署會用 apache 對多個 web 服務進行配置,用來實現 負載均衡 的功能。虛擬伺服器上部署了tomcat了,在伺服器上localhost ...
c如何使用 socket 類向 http 伺服器傳送數
socket程式設計首先要包含所需的標頭檔案winsock2.h並工程中新增庫檔案ws2 32.lib.接著載入套接字型檔所用函式是 第一個引數代表的是所要載入的套接字型檔的版本,第二個引數用於儲存返回的版本資訊 wversionrequested makeword 1,1 用makeword來設定...