请教局域网中广播问题? ( 积分: 50 )

  • 主题发起人 主题发起人 siso
  • 开始时间 开始时间
S

siso

Unregistered / Unconfirmed
GUEST, unregistred user!
我用delphi7 在做一个网络版五子棋游戏。
用的是ServerSocket 和ClientSocket 进行连接(即和聊天程序一样,不用分客户端和服务端两个程序,只要一方进行监听,另一方进行连接)
可是每次连接方得输入监听方(即作为服务机)的ip ,甚感麻烦

我想实现像cs之类的,把 正在监听(作为服务机)的主机和ip添加到客户机的列表,通过选择不同的主机名来进行连接

我的思路是这样的:
局域网中两机例如 s1(192.168.0.1),s2(192.168.0.2)运行五子棋程序,选择作为服务机监听某端口

其他机如 c1 (192.168.0.20) 运行五子棋程序,然后单击搜索时向局域网内进行广播(或者别的什么方法),进行询问,这时有运行五子棋程序且作为服务机在进行监听的s1和s2收到信息
然后分别回复主机名、ip、监听的端口
这时c1的listbox自动添加上面两机的主机名、ip、监听端口
然后我选择不同的主机就可实现连接。

请问如何实现以上过程:
1.广播(或其他的什么方法,越简单越好)
2.服务机接收到广播后把主机名、ip、端口回复给客户机
3.当客户机如c1得到回复后,在listbox1中选择某一主机(例如s1)进行连接后,
这时其他机例如 c2(192.168.0.30) 单击搜索时就不要搜到s1机了,除非s1断开连接
我对网络编程不太熟悉,麻烦给代码时能注释一下。我只有这么多分了,不胜感激!
 
我用delphi7 在做一个网络版五子棋游戏。
用的是ServerSocket 和ClientSocket 进行连接(即和聊天程序一样,不用分客户端和服务端两个程序,只要一方进行监听,另一方进行连接)
可是每次连接方得输入监听方(即作为服务机)的ip ,甚感麻烦

我想实现像cs之类的,把 正在监听(作为服务机)的主机和ip添加到客户机的列表,通过选择不同的主机名来进行连接

我的思路是这样的:
局域网中两机例如 s1(192.168.0.1),s2(192.168.0.2)运行五子棋程序,选择作为服务机监听某端口

其他机如 c1 (192.168.0.20) 运行五子棋程序,然后单击搜索时向局域网内进行广播(或者别的什么方法),进行询问,这时有运行五子棋程序且作为服务机在进行监听的s1和s2收到信息
然后分别回复主机名、ip、监听的端口
这时c1的listbox自动添加上面两机的主机名、ip、监听端口
然后我选择不同的主机就可实现连接。

请问如何实现以上过程:
1.广播(或其他的什么方法,越简单越好)
2.服务机接收到广播后把主机名、ip、端口回复给客户机
3.当客户机如c1得到回复后,在listbox1中选择某一主机(例如s1)进行连接后,
这时其他机例如 c2(192.168.0.30) 单击搜索时就不要搜到s1机了,除非s1断开连接
我对网络编程不太熟悉,麻烦给代码时能注释一下。我只有这么多分了,不胜感激!
 
请大家帮帮忙,以上问题能解决多少就多少。谢谢!
是否tcp不能广播,如果是的话我在搜索部分用udp好了。
只是不知如何发送,以及如何回复..........
 
有谁知道吗?谢了
 
先求出你所在网段的广播地址。(这个就不用说了)然后向他发送数据就可以了呀!
 
能给具体代码吗?谢谢!
 
广播地址会算吗??
1:例如192.168.0.255就是一个广播地址(192.168.0.1, 255.255.255.0)
2:只是简单的发送消息没什么可说的。
3:定义好协议也只是通信的问题。
例如你说的c1和s1已经连接了,那如果c2发送广播消息的时候S1不回应就可以了呀!
 
直接用255.255.255.255就行
 
我对delphi的网络部分不太了解,好像udp控件有好几种,我也不知要用哪一种
如何实现广播,请给出代码(部分也好)谢谢了~
 
你用INDY可以,直接使用API也可以。
我一般使用API直接编写,那样控制起来比较好控制!
 
多人接受答案了。
 
后退
顶部