Re: [J2ME] Socket,重複送資料會得到錯誤

看板java作者 (無道德事業集團)時間17年前 (2008/11/18 08:19), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串5/5 (看更多)
回一個跟程式沒啥關係的東西:p 在寫這類程式時建議可以用wireshark做輔助, 幫助你分析每一個你送出及收到的封包到底長什麼樣子. 不過我相信很多人都沒有很艱深的網路底子(包含我), 所以wireshark打開開始listen時, 看到一大堆無關的封包應該就被嚇傻然後關掉了. 我的做法是, 如果很單純的是單點對單點的傳輸, 例如你的target是10.0.0.2:1234 你可以在filter裡面下: tcp.port == 1234 或是 ip.src == 10.0.0.2 || ip.desc == 10.0.0.2 (前面說過了, 我不是transport layer以下的專家, 其他表達式我也不太會用, 這是我 這種網路新手在用的表達式, 有更好的歡迎指正:p) 這樣之後基本上你只會看到你跟target之間溝通的封包了, 之後你需要care的只有 payload的部分, TCP or IP header基本上不是我們需要去實作的, 不過要分清楚的是 UDP是叫datagram就是了. 最後補充一點的是如果您實作的是現有的protocal, 例如SSH, 如果您的封包裡面的 payload格式壓錯了, 你在wireshark裡也可以看到他會提示你[malformed]的字樣,告訴你 這個封包大概除了你之外沒有人看得懂它是什麼:p 以上, 希望對常實作socket程式的人有幫助. ※ 引述《ixxogux (堅持阿伏哥連盟￾ ￾ )》之銘言: : 我來了,一如我之前所承諾的 :) : : sc.setSocketOption(SocketConnection.DELAY, 0); : : sc.setSocketOption(SocketConnection.KEEPALIVE, 0); : : //參考自http://developers.sun.com/mobility/midp/articles/midp2network/ : setSocketOption(SocketConnection.DELAY,0);//傳送"沒有"delay之意 : //也就是no buffer! : setSocketOption(SocketConnection.KEEPALIVE,0);//如字意,表示 : //"不要"持續連線 : 跟各位報告一下,這份程式已經證實沒有問題。有問題的是對方的server :p : 問題出在哪呢? : 對方只要接受連線,直到我傳了結束關鍵字,該server就會把socket connection : 給關掉,也就導致我後面要送第二次的時候出了點小問題嚕。 : 結論:寫法沒錯,有需要的人可以參考,或者是寫信問我喔。 : 至於前面所提到的 : ReceiveMessages() : 裡面有個int ch = 100;//這個沒啥特殊意義,寫0 寫10好。反正接下來 : // ch = is.read(); 就會把他蓋掉了 : 此外,我自己的習慣會是method首字大寫。感謝PsMonkey不厭其煩的指正。 : 也就是:Java 的method習慣是首字小寫。 : 謝謝各位的幫忙 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.193.81.34 ※ 編輯: mc18 來自: 123.193.81.34 (11/18 08:28)

03/05 19:44, , 1F
現在看到這篇回文,感謝您的用心
03/05 19:44, 1F
文章代碼(AID): #198WeKav (java)
討論串 (同標題文章)
文章代碼(AID): #198WeKav (java)