小弟有些問題想要請教一下:
最近在做一個防火墻設備檢索OPC流量并做ALG處理的一個專案,因為設備涉及到網路地址轉換(NAT),所以IP層的地址會被修改,因為OPC協商時服務器發送的RemoteCreatInstance Response報文中攜帶了服務器端的地址和埠資訊,因為做地址轉換所以客戶端不能看到服務器的真實網路地址,所以我需要將這個報文中的地址給換掉。現在的問題是如果修改前的地址和修改后的地址長度是一樣的,如由1.1.1.1改成了2.2.2.2,那這樣連接是沒問題的,但如果長度不一樣,如由10.10.10.10改成了1.1.1.1,就連不上,總是報引數錯誤的提示。長度不一樣時我也會對應修改NumEntries,securityoffset等這一些涉及到長度和偏移的欄位,我用wireshark抓包看到各欄位都是對的,但這個response報文發到客戶端后,客戶端就報錯了。不知道是我哪個地方漏改了還是有其他要注意的地方呢?希望大家知道的給個提示。另外好像里面的資料時四位元組對齊的,所以我故意讓修改前后地址的長度差也四位元組的倍數,這樣可以暫時忽略對齊問題。我客戶端和服務器都是用的Matrikon OPC explorer。

如上圖我主要就是修改StringBinding中的NetworkAddr。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/101730.html
標籤:網絡通信/分布式開發
