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/cn.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灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP