[問題] Socket傳值請益

作者: daniel098962 (阿河)   2018-02-06 23:10:57
安安各位大大好
小弟最近剛接觸Socket
想利用Socket再App上能夠與一台機器做連線
而這台機器是傳正確值給它 它就能夠根據訊息回傳值回來
因此貌似是不需要server端的程式碼(自己也不太確定)
而最近有透過程式大概確定有連線成功
但現在卡在我該怎麼傳正確的值給它了
正確的值會像以下的圖

現在問題就是
我該怎麼像圖片那樣
一次是傳五個byte的值啊
還是得要分五次?
但分五次server端不就會誤以為每次只傳一個數值嗎
真的不知道這邊該怎麼解決
抱歉小弟新手
如果解答很簡單還望各位大大不要生氣~
如有需要程式碼 因專案不在身邊
恐怕要等明天後再貼上
在此補上程式碼網址
https://www.codepile.net/pile/X4KGPe4Q
謝謝各位觀看與解惑
作者: omidofor (媽媽咪呀)   2018-02-08 12:31:00
你的問題在於不了解Java基礎型別代表的意義,以及不知道類別、方法上面的關鍵字代表什麼意思。建議你上網查資料或是找本書補一下基礎的知識,不然這邊講一步動一步的方式對你完全沒有幫助。最慘的是寫出一個看似可以但充滿臭蟲的程式,不了解基礎的你會完全無法找出問題所在並修正。
作者: gmoz ( This can't do that. )   2018-02-08 10:27:00
找一下網路上的SOCKET互傳字串的範例吧完全看懂是怎麼傳怎麼拿怎麼轉的之後再回來寫
作者: zephyrhymn   2018-02-07 07:51:00
這作業(?)讓我想到大學時期的網路概論的作業,用socket來模擬TCP/IP的handshaking 行為怎麼說呢...感覺你對Socket和TCP協定完全沒概念...你說的分一次或五次都可以 先了解socket的原理你就會理解不過要先了解server端怎麼處理資料的 你再根據server的行為去實作client端的程式你這個範例我猜是接受"一組"數列 不確定他怎麼處理5個數列的Java來處理的話 你直接去看Java的Socket怎麼實作即可你給的條件不明不確的只說要送socket的話去google一下java socket client一堆範例...把out.writeUTF("我是Client");改成下面試試看byte[] bytes = "123".getBytes();out.write(bytes);
作者: ssccg (23)   2018-02-07 14:41:00
你貼的那個圖傳的就是byte[],為什麼你要傳int[] ?socket傳資料都是以byte為單位,其他資料型態都是轉為byteint就是轉成4個byte,DataOutputStream的writeInt可直接轉真的要傳五個int,可以呼叫五次writeInt,資料只會先暫存在buffer裡,到buffer滿了或呼叫flush才會以封包的形式送出自己依read的回傳值取buffer中實際上是回傳值的部分你要先檢查那個值是否>=0,沒有讀到時會是-1然後迴圈的index應該從0開始,< 長度你第一次在黃框就把socket裡的東西讀掉了,當然紅框那邊讀不到東西,改過之後紅框是正常的,然後讀掉了當然黃框那邊的read就沒東西了,read只能讀一次不能重覆讀
作者: y3k (激流を制するは静水)   2018-02-10 12:56:00
如果Server端允許 我比較建議直接用Http....阿 不過作業還是用Socket喔XD

Links booklink

Contact Us: admin [ a t ] ucptt.com