第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

帶有 Java 客戶端的 golang 服務器

帶有 Java 客戶端的 golang 服務器

Go
qq_花開花謝_0 2022-01-10 14:56:12
我有一個大問題......我們有一個關于學校和工作的項目。我編寫了 go 服務器,我的伙伴編寫了 java 客戶端。我有一個問題,如果他發(fā)送類似“Hello World”的內(nèi)容,golang 服務器會將其拆分為“Hello”和“World”Java 代碼:public class DataController {public String recieveDataFromServer(Socket socket) throws Exception {    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));    while (!bufferedReader.ready()) { }    String data = bufferedReader.readLine();    return data;}public void sendDataToServer(Socket socket, String data) throws Exception{    PrintWriter printWriter = new PrintWriter(socket.getOutputStream(), true);    printWriter.println(data);}}去代碼:func handleRequest(conn net.Conn) {request := make([]byte, 256)for {    _, err := conn.Read(request)    if err != nil {        Error.Println(err.Error())        return    }                   Info.Println("Message Received: " + string(request))    message := []byte(time.Now().String())    message = append(message, []byte(": ")...)    message = append(message, request...)    broadcast(message)}}廣播功能只是對所有連接執(zhí)行 conn.Write(msg) 。有誰知道問題出在哪里?編輯:我發(fā)現(xiàn)了問題。Java 在每個單詞后添加一個 \r\n。然后 go server 認為消息結束了。我們現(xiàn)在切換到 c#。在使用 bufferedWriter 寫入套接字時,它更容易并且工作正確。
查看完整描述

2 回答

?
米琪卡哇伊

TA貢獻1998條經(jīng)驗 獲得超6個贊

在這種情況下,我會建議使用 gRPC。這是文檔

這是gitrepo。

使用protobuf而不是 JSON 來定義服務合同。

因此,您也可以將此服務用于其他可能使用任何語言的客戶。

為了實現(xiàn)這一點,您只需要提取您的服務合同并以客戶各自的語言生成您的合同。

在構建方面可能有點貴,但它會讓你的項目可重用,而且你肯定會學到一些新東西。


查看完整回答
反對 回復 2022-01-10
?
楊__羊羊

TA貢獻1943條經(jīng)驗 獲得超7個贊

您可能需要先發(fā)送要讀取的字節(jié)數(shù),然后再發(fā)送要使用 io.ReadFull 函數(shù)讀取的字節(jié)...這樣您就可以確定讀取了所有字符串...

在 go https://golang.org/pkg/io/https://golang.org/pkg/io/ 中閱讀全文

ReadFully Java 與 DataInputStream :https://docs.oracle.com/javase/8/docs/api/

  • 首先讀取 int 的字節(jié)數(shù)....

  • 稍后使用 io.ReadFull 方法讀取字節(jié)...

注意:您需要將 bigendianess 中的整數(shù)寫入 java。

binary.Write(tx, binary.BigEndian, value)

我的建議是讓復雜的 go 和 read int 和 readFull 字節(jié)在 java 中......

注意:如果您需要發(fā)送圖像或類似的東西,您只能在兩個方向上簡單地寫入字節(jié)......

在 Go 中發(fā)送和寫入字節(jié)的代碼

在 Java 中發(fā)送和寫入字節(jié)的代碼

我希望這有幫助...


查看完整回答
反對 回復 2022-01-10
  • 2 回答
  • 0 關注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號