java 板


LINE

想请问大大们, 我写一只使用 MulticastSocket 传讯息与收讯息的程式 但是自己会收到自己发送出去的讯息 想请问要如何解决呢? (由於传送与接收需要同一个Port,所以撇除使用不同port的方法。) 我是将收讯息的写成执行绪,传送则是要传才使用的function 我有试过将传讯息与收讯息写在两只不同的程式 但依然会发生自己收到自己发送出去的讯息。 奇怪的是,如果把 <?> 标记的两行注解拿掉(26、27行) 就是 sendIP()里面也写一次 group = InetAddress.getByName("224.1.1.1"); mSocket = new MulticastSocket(port); // <要求MSG> 结果这种自己收到自己送出的讯息问题,只会发生一次 import java.io.*; import java.net.*; public class test extends Thread { InetAddress group; MulticastSocket mSocket; DatagramPacket packReceive,packSend; int port = 7777; public test(){ try{ // 设定群播IP与MulticastSocket group = InetAddress.getByName("224.1.1.1"); mSocket = new MulticastSocket(port); // 加入群播群组(接受群播封包用) mSocket.joinGroup(group); this.start(); }catch(Exception e){ System.out.println(e); } } public void sendIP(){ try{ // 设定群播IP与MulticastSocket //<?> group = InetAddress.getByName("224.1.1.1"); //<?> mSocket = new MulticastSocket(port); // <要求MSG> // 测试用:传本机IP String str = InetAddress.getLocalHost(). getHostAddress().toString(); str += "\n"; System.out.println("\n送出>>"); System.out.print(str); byte data[] = str.getBytes("UTF8"); packSend = new DatagramPacket(data,data.length, group,port); mSocket.send(packSend); }catch(Exception e){ System.out.println(e); } } public void run(){ try{ while(true){ byte data[] = new byte[1024]; // 准备接收封包(MSG) packReceive = new DatagramPacket(data, data.length,group,port); // Retrieve datagram data mSocket.receive(packReceive); System.out.println("\n收到>>"); int size=0; // ======= 处理封包结尾 ======= for(int i=0;i<data.length;i++){ if(data[i]==0){ size = i; break; } } String str = new String(data,0,size,"UTF8"); System.out.println(str); } }catch(Exception e){ System.out.println(e); } } public static void main (String[] args) throws IOException{ test t = new test(); t.sendIP(); t.sendIP(); t.sendIP(); } } --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.133.18.7
1F:→ henry035:XD 自己找到答案了 mSocket.setLoopbackMode(true); 11/12 08:29







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

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

TOP