c#中如何实现套接字通信

我在写一个联机玩的坦克大战游戏,现在的做法是用广播寻找主机,然后分别用accept和connect建立连接,为了游戏中不断的通信,客户端和服务器都有线程监听对方的send... 我在写一个联机玩的坦克大战游戏,现在的做法是用广播寻找主机,然后分别用accept和connect建立连接,为了游戏中不断的通信,客户端和服务器都有线程监听对方的send。我这样做合适吗,各位大神有没有相关的经验?先谢谢大家了~ 展开
 我来答
日拱一卒行则将至
推荐于2016-09-22 · TA获得超过508个赞
知道小有建树答主
回答量:707
采纳率:0%
帮助的人:313万
展开全部
推荐你参考一下

DatagramSocket只允许数据报发送一个目的地址,java.net包中提供了一个类MulticastSocket,允许数据报以广播方式发送到该端口的所有客户。MulticastSocket用在客户端,监听服务器广播来的数据。
多播组通过 D 类 IP 地址和标准 UDP 端口号指定。D 类 IP 地址在 224.0.0.0 和 239.255.255.255 的范围内(包括两者)。地址 224.0.0.0 被保留,不应使用

public class MulticastClient {
public static void main(String[] args) throws IOException {
//创建4444端口的广播套接字
MulticastSocket client=new MulticastSocket(4444);
//得到127.0.0.1的地址信息
InetAddress address=InetAddress.getByName("224.0.0.225");
//使用joinGroup()将广播套接字绑定到地址上
client.joinGroup(address);
DatagramPacket packet;
//循环5次
for(int i=0;i<5;i++){
//创建缓冲
byte[] bytes=new byte[256];
//创建接收数据报
packet=new DatagramPacket(bytes,bytes.length);
//接收数据
client.receive(packet);
//由接收到的数据报等到字节数组,并且创建一个字符串
String received=new String(packet.getData());
//打印得到的字符串
System.out.println(received);
}
//把广播套接字从地址上解除绑定
client.leaveGroup(address);
client.close();
}
}
百度网友c62a14344
2010-05-20 · TA获得超过832个赞
知道小有建树答主
回答量:317
采纳率:0%
帮助的人:337万
展开全部
是的,需要开线程监听对方的 Send
而且最好,每隔一段时间向对方发送一个数据包。内容任意,比如说 "c" 一个字符都可以。用以检测是否断线。
专业术语上把这个数据包叫做 "心跳包",顾名思义,这个心跳包的发送频率就像心跳一样,每分钟60次左右,当然你可以根据你的情况来设定。比如说5秒钟一次
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式