java 板


LINE

安安各位大大好 小弟最近剛接觸Socket 想利用Socket再App上能夠與一台機器做連線 而這台機器是傳正確值給它 它就能夠根據訊息回傳值回來 因此貌似是不需要server端的程式碼(自己也不太確定) 而最近有透過程式大概確定有連線成功 但現在卡在我該怎麼傳正確的值給它了 正確的值會像以下的圖 https://imgur.com/TQFDlIx.jpg
現在問題就是 我該怎麼像圖片那樣 一次是傳五個byte的值啊 還是得要分五次? 但分五次server端不就會誤以為每次只傳一個數值嗎 真的不知道這邊該怎麼解決 抱歉小弟新手 如果解答很簡單還望各位大大不要生氣~ 如有需要程式碼 因專案不在身邊 恐怕要等明天後再貼上 在此補上程式碼網址 https://www.codepile.net/pile/X4KGPe4Q 謝謝各位觀看與解惑 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.10.38.120
※ 文章網址: https://webptt.com/m.aspx?n=bbs/java/M.1517929860.A.914.html ※ 編輯: daniel098962 (39.10.38.120), 02/06/2018 23:13:17
1F:推 zephyrhymn: 這作業(?)讓我想到大學時期的網路概論的作業,用sock 02/07 07:51
2F:→ zephyrhymn: et來模擬TCP/IP的handshaking 行為 02/07 07:51
※ 編輯: daniel098962 (61.216.92.108), 02/07/2018 10:04:20
3F:推 zephyrhymn: 怎麼說呢...感覺你對Socket和TCP協定完全沒概念... 02/07 10:27
4F:→ zephyrhymn: 你說的分一次或五次都可以 先了解socket的原理你就會 02/07 10:30
5F:推 zephyrhymn: 理解 02/07 10:33
6F:→ zephyrhymn: 不過要先了解server端怎麼處理資料的 你再根據server 02/07 10:34
7F:→ zephyrhymn: 的行為去實作client端的程式 02/07 10:34
8F:→ zephyrhymn: 你這個範例我猜是接受"一組"數列 不確定他怎麼處理5個 02/07 10:35
9F:→ zephyrhymn: 數列的 02/07 10:35
10F:→ zephyrhymn: Java來處理的話 你直接去看Java的Socket怎麼實作即可 02/07 10:36
11F:推 zephyrhymn: 你給的條件不明不確的只說要送socket的話 02/07 10:43
12F:→ 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
13F:推 zephyrhymn: 把out.writeUTF("我是Client");改成下面試試看 02/07 13:48
14F:推 zephyrhymn: byte[] bytes = "123".getBytes(); 02/07 13:52
15F:→ zephyrhymn: out.write(bytes); 02/07 13:52
16F:→ ssccg: 你貼的那個圖傳的就是byte[],為什麼你要傳int[] ? 02/07 14:41
17F:→ ssccg: socket傳資料都是以byte為單位,其他資料型態都是轉為byte 02/07 14:44
18F:→ ssccg: int就是轉成4個byte,DataOutputStream的writeInt可直接轉 02/07 14:45
19F:→ ssccg: 真的要傳五個int,可以呼叫五次writeInt,資料只會先暫存在 02/07 14:46
20F:→ ssccg: buffer裡,到buffer滿了或呼叫flush才會以封包的形式送出 02/07 14:48
喔喔 感謝兩位大大 現在我程式碼改成這樣 https://imgur.com/S5Jbded.jpg
Server也有回應了.... 但東西不是像我測試時是00 00 反而是2 是我傳回來的值沒轉換對的型態嗎 那是哪種型態啊 感謝 ※ 編輯: daniel098962 (61.216.92.108), 02/07/2018 15:48:28 我後來的想法是 他回傳2是告訴我設備回傳了bytes[0],bytes[1]兩個給我 而我要的是知道bytes[0],bytes[1]的值各是多少 因此我後來加上一段程式碼讓它裡面的值轉String show出來 但變成下面這樣... https://imgur.com/s2vCjHX.jpg
因為之前有宣告buff為byte[1024]的陣列 估計是跑出1024個0了... 剛好設備回傳的值也是0 看不出來前兩個這樣算不算正確了哈哈 現在問題是 因為根據不同的指令 設備回傳的值的長短也會不一 這邊我該怎麼設計讓它每次都是show給我剛剛好長度的值啊 感謝 ※ 編輯: daniel098962 (61.216.92.108), 02/07/2018 16:20:48 後來我寫了一個for迴圈 想說既然in.read(...)那行跑出來是2 我宣告一個int = in.read(...) 在寫個for迴圈讓它印出來 程式如下圖 https://imgur.com/QfYmwnw.jpg
但沒有任何東西跑出來欸 而且程式就當了... 有人知道怎麼回事嗎 感謝 ※ 編輯: daniel098962 (61.216.92.108), 02/07/2018 16:51:07
21F:→ ssccg: 自己依read的回傳值取buffer中實際上是回傳值的部分 02/07 16:53
22F:→ ssccg: 你要先檢查那個值是否>=0,沒有讀到時會是-1 02/07 16:58
23F:→ ssccg: 然後迴圈的index應該從0開始,< 長度 02/07 16:58
抱歉S大 有關於read那部分有點看不懂 所以我取回的是? 另外剛剛也有發現buff[i]設錯了 後來把紅框程式往上移就有東西出現了 但黃框的println卻沒跑出來... 如以下 https://imgur.com/UOnDocW.jpg
※ 編輯: daniel098962 (61.216.92.108), 02/07/2018 17:02:21
24F:→ ssccg: 你第一次在黃框就把socket裡的東西讀掉了,當然紅框那邊讀 02/07 17:14
25F:→ ssccg: 不到東西,改過之後紅框是正常的,然後讀掉了當然黃框那邊 02/07 17:15
26F:→ ssccg: 的read就沒東西了,read只能讀一次不能重覆讀 02/07 17:18
喔喔~ 原來如此哈哈 抱歉竟然連這這麼基本的都不知道~ 那s大想再向您請教 有關於如何檢查是否>=0 我該把條件設在哪 因為我現在好像就遇到問題了... 現在回傳給我的值都是負的... 抱歉又來叨擾各位了 昨天測試一筆新的組數 照理來說會跑出80 8C 如下圖 https://imgur.com/Pj4sg4I.jpg
但發現跑出來是負數 https://imgur.com/FgFO5lF.jpg
想一想後覺得可能是轉16進制的問題 因此轉了後如下圖 https://imgur.com/TkfXMhn.jpg
確實最後是我想要的 但今天只想取數值 前面的fffff不想取出 因此天真如我以為補數能幫我解決 但發現補數後的值完全跑掉了 https://imgur.com/c4wkV6j.jpg
想請教大家 我可以怎樣取我想要的東西呢 感謝 ※ 編輯: daniel098962 (61.216.92.108), 02/07/2018 18:11:30 ※ 編輯: daniel098962 (61.216.92.108), 02/08/2018 10:12:43
27F:推 gmoz: 找一下網路上的SOCKET互傳字串的範例吧 02/08 10:27
28F:→ gmoz: 完全看懂是怎麼傳怎麼拿怎麼轉的之後再回來寫 02/08 10:30
29F:推 omidofor: 你的問題在於不了解Java基礎型別代表的意義,以及不知道 02/08 12:31
30F:→ omidofor: 類別、方法上面的關鍵字代表什麼意思。 02/08 12:32
31F:→ omidofor: 建議你上網查資料或是找本書補一下基礎的知識,不然這邊 02/08 12:33
32F:→ omidofor: 講一步動一步的方式對你完全沒有幫助。最慘的是寫出一個 02/08 12:33
33F:→ omidofor: 看似可以但充滿臭蟲的程式,不了解基礎的你會完全無法找 02/08 12:34
34F:→ omidofor: 出問題所在並修正。 02/08 12:35
感謝各位的指教 這是真的 對於java的基礎還是太多不了解 現在也是邊從網路上尋找 也一邊看書找有沒有對應的資訊 但這專案算是近期需要完成 才會想來這邊向大家求解或提供一個邏輯方向思考 感謝各位了~~~ ※ 編輯: daniel098962 (61.216.92.108), 02/08/2018 13:15:58 最後也有成功讓他跑出來了 感謝各位的幫忙~ https://imgur.com/RT4fWB2.jpg
※ 編輯: daniel098962 (61.216.92.108), 02/08/2018 13:55:51
35F:→ y3k: 如果Server端允許 我比較建議直接用Http.... 02/10 12:56
36F:→ y3k: 阿 不過作業還是用Socket喔XD 02/10 13:04







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Gossiping站內搜尋

TOP