① C++用socket 做服務端,java做客戶端 可以通信嗎
可以通信的,因為C++和JAVA都是使用SOCKET編程,因此C++寫的伺服器,JAVA做客戶端是能夠通信的。我也經常使用python搭建一個伺服器,因為PYTHON提供了SOCKET庫,這個庫跨平台也很好用。我的同事在寫溫濕度監控的後台伺服器(java),就是連接到我用python寫的伺服器進行測試的。
如果說你的通信不上,那麼先要檢測,能否互相ping通,其次搞清楚C++伺服器在區域網還是外網,如果是自己搭的伺服器還需要考慮這個埠映射問題。如果這些都沒問題就是通信不上,你就要通過wireshark等抓包工具查一下TCP/IP的三次握手了。一般來說,調用socket的API時系統都會通過返回值告訴你實際連接上沒有,如果是通信不上,多半是通信協議這一塊沒做好。
如果有不懂的,歡迎進一步提問
② Java客戶端遠程調用C伺服器
真沒有作過相關的開發,Java和C之間相互調用,本地的使用jni或者是直接發送Windows消息;遠程的,都是使用socket通信的。談一些想法,希望能給你些幫助,紙上談兵:
1)現在常用的異構系統之間的調用,採用Web Service的方法,沒做過,但是應該可以。
2)RMI是Java To Java,另外Sun還提供了RMI-IIOP,這個是綜合了RMI和Corba,是可以用在Java和其它語言對象之間的遠程調用,但是我沒有資料,也許你需要看看Corba的基本知識,如何使用idl來定義C對象的介面.
3)我不知道你對C所在的伺服器有什麼要求,是否可以運行Java.如果可以,那麼有一個方法,你可以做一個Java程序來作為RMI的伺服器,然後這個Java程序負責和Java客戶通信,通信的方式還是RMI.然後,在這個Java服務程序中,同過jni的方法調用你的C程序.
③ java開發中svr的client是什麼意思
client是客戶端,在java中c/s結構,c是client客戶端,s是server伺服器端:
C/S又稱Client/Server或客戶/伺服器模式。伺服器通常採用高性能的PC、工作站或小型機,並採用大型資料庫系統,如ORACLE、SYBASE、InfORMix或 SQL Server。客戶端需要安裝專用的客戶端軟體。
傳統的C/S體系結構雖然採用的是開放模式,但這只是系統開發一級的開放性,在特定的應用中無論是Client端還是Server端都還需要特定的軟體支持。由於沒能提供用戶真正期望的開放環境,C/S結構的軟體需要針對不同的操作系統系統開發不同版本的軟體, 加之產品的更新換代十分快,已經很難適應百台電腦以上區域網用戶同時使用。而且代價高, 效率低。
Client/Server結構是20世紀80年代末提出的。這種結構的系統把較復雜的計算和管理任務交給網路上的高檔機器——伺服器,而把一些頻繁與用戶打交道的任務交給前端較簡單的計算機—客戶機。通過這種方式,將任務合理分配到客戶端和伺服器端,既充分利用了兩端硬體環境的優勢,又實現了網路上信息資源的共享。由於這種結構比較適於區域網運行環境,因此逐漸得到了廣泛的應用。
在Client/Server結構的系統中,應用程序分為客戶端和伺服器端兩大部分。客戶端部分為每個用戶所專有,而伺服器端部分則由多個用戶共享其信息與功能。客戶端部分通常負責執行前台功能,如管理用戶介面、數據處理和報告請求等;而伺服器端部分執行後台服務,如管理共享外設、控制對共享資料庫的操作等。這種體系結構由多台計算機構成,它們有機地結合在一起,協同完成整個系統的應用,從而達到系統中軟、硬體資源最大限度的利用。
任何一個應用系統,不管是簡單的單機系統還是復雜的網路系統,都由3個部分組成:顯示邏輯部分(表示層)、事務處理邏輯部分(功能層)和數據處理邏輯部分(數據層)。顯示邏輯部分的功能是與用戶進行交互;事務處理邏輯部分的功能是進行具體的運算和數據的處理;數據處理邏輯部分的功能是對資料庫中的數據進行查詢、修改和更新等。在兩層模式的Client/Server結構中,顯示邏輯部分和事務處理邏輯部分均被放在客戶端,數據處理邏輯部分和資料庫被放在伺服器端。這樣就使得客戶端變得很「胖」,成為胖客戶機,而伺服器端的任務相對較輕,成為瘦伺服器。
這種傳統的Client/Server結構比較適合於在小規模、用戶數較少(≤100)、單一資料庫且有安全性和快速性保障的區域網環境下運行,所以得到了廣泛的應用。但隨著應用系統的大型化,以及用戶對系統性能要求的不斷提高,兩層模式(2-Tier)的Client/Server結構越來越滿足不了用戶需求。這主要體現在程序開發量大、系統維護困難、客戶機負擔過重、成本增加及系統的安全性難以保障等方面。