我有一個學校,我必須使一個應用程序通過網絡工作的任務。我們可以用Java或C(或兩者)來完成。 我們已經給出了一個確切的協議來在計算機之間進行通信。 下面是該協議的消息的一個示例:字節從網絡到字符串
[REGIS␣id␣port␣pass+++]
在這個消息,標識必須恰好在8個字節,端口上的4個字節,通過對2個字節,REGIS上的5個字節和+++上3個字節。 要閱讀此消息,我使用InputStream對象和read()方法,所以我得到一個byte []數組。
我的問題是:我可以直接從byte []數組構造一個String對象,並使用正則表達式來檢查消息是否正確構造?
其他問題是:我可以做一個字符串包含我的消息,並使用String.getBytes()通過網絡發送一個字節數組[]?
我的問題是關於編碼:我確定它會爲每個字符1個字節?如果消息被C程序讀取,我不會有問題嗎?
謝謝你的幫助!
「我可以直接從byte []數組構造一個String對象」 - 從字面上有一個構造函數爲。你有沒有嘗試過任何東西? – f1sh
是的我知道這是一個構造函數,我的問題是:我可以這樣做,並確保我仍然有正確數量的字節轉換之間? – StuYYY
正則表達式適用於String,它由字符組成,而不是字節。所有字節序列都不是有效字符串,字節如何轉換爲字符取決於所選的字符集(又名編碼)。你爲什麼不讀一下你期望的字節數(22)?如果您讀取了22個字節,您怎麼能知道一條消息無效?因爲您對字節的內容沒有任何限制?我看到的唯一無效情況是:1.您收到少於22個字節,然後關閉套接字; 2.你應該收到N條消息,但收到的字節數不是22的倍數。 –