
推 zephyrhymn: 這作業(?)讓我想到大學時期的網路概論的作業,用sock 02/07 07:51
→ zephyrhymn: et來模擬TCP/IP的handshaking 行為 02/07 07:51
※ 編輯: daniel098962 (61.216.92.108), 02/07/2018 10:04:20
推 zephyrhymn: 怎麼說呢...感覺你對Socket和TCP協定完全沒概念... 02/07 10:27
→ zephyrhymn: 你說的分一次或五次都可以 先了解socket的原理你就會 02/07 10:30
推 zephyrhymn: 理解 02/07 10:33
→ zephyrhymn: 不過要先了解server端怎麼處理資料的 你再根據server 02/07 10:34
→ zephyrhymn: 的行為去實作client端的程式 02/07 10:34
→ zephyrhymn: 你這個範例我猜是接受"一組"數列 不確定他怎麼處理5個 02/07 10:35
→ zephyrhymn: 數列的 02/07 10:35
→ zephyrhymn: Java來處理的話 你直接去看Java的Socket怎麼實作即可 02/07 10:36
推 zephyrhymn: 你給的條件不明不確的只說要送socket的話 02/07 10:43
→ zephyrhymn: 去google一下java socket client一堆範例... 02/07 10:43
感謝Z大回文,抱歉小弟沒說清楚
確實現在最大的問題,便是不知道設備到底是怎麼接收資料的
只知道這個設備是透過RS232指令監控的
所以現在心裡的想法是想傳一組數列給設備
想用int[]去傳 但看到read(write)似乎只有接受byte[]的傳法
想請教該怎麼傳int[]
另外在上面也附上程式碼了
目前大概是最後的DataSendGet方法那邊不清楚該怎麼做
感謝~
※ 編輯: daniel098962 (61.216.92.108), 02/07/2018 12:18:36
推 zephyrhymn: 把out.writeUTF("我是Client");改成下面試試看 02/07 13:48
推 zephyrhymn: byte[] bytes = "123".getBytes(); 02/07 13:52
→ zephyrhymn: out.write(bytes); 02/07 13:52
→ ssccg: 你貼的那個圖傳的就是byte[],為什麼你要傳int[] ? 02/07 14:41
→ ssccg: socket傳資料都是以byte為單位,其他資料型態都是轉為byte 02/07 14:44
→ ssccg: int就是轉成4個byte,DataOutputStream的writeInt可直接轉 02/07 14:45
→ ssccg: 真的要傳五個int,可以呼叫五次writeInt,資料只會先暫存在 02/07 14:46
→ ssccg: buffer裡,到buffer滿了或呼叫flush才會以封包的形式送出 02/07 14:48
喔喔 感謝兩位大大
現在我程式碼改成這樣
https://imgur.com/S5Jbded.jpg



→ ssccg: 自己依read的回傳值取buffer中實際上是回傳值的部分 02/07 16:53
→ ssccg: 你要先檢查那個值是否>=0,沒有讀到時會是-1 02/07 16:58
→ ssccg: 然後迴圈的index應該從0開始,< 長度 02/07 16:58
抱歉S大 有關於read那部分有點看不懂 所以我取回的是?
另外剛剛也有發現buff[i]設錯了
後來把紅框程式往上移就有東西出現了
但黃框的println卻沒跑出來...
如以下
https://imgur.com/UOnDocW.jpg

→ ssccg: 你第一次在黃框就把socket裡的東西讀掉了,當然紅框那邊讀 02/07 17:14
→ ssccg: 不到東西,改過之後紅框是正常的,然後讀掉了當然黃框那邊 02/07 17:15
→ ssccg: 的read就沒東西了,read只能讀一次不能重覆讀 02/07 17:18
喔喔~ 原來如此哈哈
抱歉竟然連這這麼基本的都不知道~
那s大想再向您請教 有關於如何檢查是否>=0
我該把條件設在哪
因為我現在好像就遇到問題了...
現在回傳給我的值都是負的...
抱歉又來叨擾各位了
昨天測試一筆新的組數
照理來說會跑出80 8C 如下圖
https://imgur.com/Pj4sg4I.jpg




推 gmoz: 找一下網路上的SOCKET互傳字串的範例吧 02/08 10:27
→ gmoz: 完全看懂是怎麼傳怎麼拿怎麼轉的之後再回來寫 02/08 10:30
推 omidofor: 你的問題在於不了解Java基礎型別代表的意義,以及不知道 02/08 12:31
→ omidofor: 類別、方法上面的關鍵字代表什麼意思。 02/08 12:32
→ omidofor: 建議你上網查資料或是找本書補一下基礎的知識,不然這邊 02/08 12:33
→ omidofor: 講一步動一步的方式對你完全沒有幫助。最慘的是寫出一個 02/08 12:33
→ omidofor: 看似可以但充滿臭蟲的程式,不了解基礎的你會完全無法找 02/08 12:34
→ omidofor: 出問題所在並修正。 02/08 12:35
感謝各位的指教
這是真的 對於java的基礎還是太多不了解
現在也是邊從網路上尋找 也一邊看書找有沒有對應的資訊
但這專案算是近期需要完成
才會想來這邊向大家求解或提供一個邏輯方向思考
感謝各位了~~~
※ 編輯: daniel098962 (61.216.92.108), 02/08/2018 13:15:58
最後也有成功讓他跑出來了
感謝各位的幫忙~
https://imgur.com/RT4fWB2.jpg

→ y3k: 如果Server端允許 我比較建議直接用Http.... 02/10 12:56
→ y3k: 阿 不過作業還是用Socket喔XD 02/10 13:04