c#中如何实现套接字通信
我在写一个联机玩的坦克大战游戏,现在的做法是用广播寻找主机,然后分别用accept和connect建立连接,为了游戏中不断的通信,客户端和服务器都有线程监听对方的send...
我在写一个联机玩的坦克大战游戏,现在的做法是用广播寻找主机,然后分别用accept和connect建立连接,为了游戏中不断的通信,客户端和服务器都有线程监听对方的send。我这样做合适吗,各位大神有没有相关的经验?先谢谢大家了~
展开
2个回答
展开全部
推荐你参考一下
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();
}
}
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();
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询