用Socket编程,如何让clientSocket自动连接到serversocket上,而不用手工配置。(50分)

  • 主题发起人 主题发起人 wrksky
  • 开始时间 开始时间
W

wrksky

Unregistered / Unconfirmed
GUEST, unregistred user!
用Socket编程,如何让clientSocket自动连接到serversocket上,而不用手工输入服务器的
IP或者Host,该如何实现?
 
可能不行吧,如果是局域网的话可用TUDP先广播一下,服务器收到后反回一个IP地址。
 
呵呵,TServerSocket和 TClientSocket够傻瓜了,你还想更简单,呵呵
 
for 张无忌
我想能不能,在启动时先向局域网内每一个机子发一个确认命令,
如果是服务器,那么接收到这个命令他会记录下客户机的sockHandle,然后反向发送恢复命令。
来确认已经连接到服务器,客户端接收到确认以后也会记下服务器的IP这样就可以和服务器
建立连接了,我只是这样想,不知道是否可行。
 
那就用我爱PASCAL的办法,先用UDP广播几次消息,服务器收到这个消息以后把他的IP
和端口返回,然后TClientSocket就去连这个服务器,
TO wrksky:你这个想法确实很新颖,以后如果有机会我也想采用,这样可以减少配置
客户端的设置时间,不过要增加一个UDP线程。
 
不过你的UDP接受广播要用一个默认端口,所以你还是要设置一下。
 
请问,如果局域网中有多个服务器,那么究竟会去连哪一个呢?
 
:)根据不同的服务器返回的不同的信息你可以确定不同的服务就去去连接对应的服务器,
 
‘先用UDP广播几次消息,服务器收到这个消息以后把他的IP
和端口返回,然后TClientSocket就去连这个服务器’
为什么非要用udp?clientsocket应该也能实现的,只是在连接的时候加上错误处理就行了。
还有干吗还要加一个线程?你是想确认服务器的吗?没有必要吧
 
楼上兄弟说的有道理耶,UDP是有必要的,但为什么要加一个线程呢?[:I]
 
你要知道TCP需要连接才能发数据,不支持广播,而且
很耗资源,还有TClientSocket是异步连接,处理错误
需要一些技巧,你如果用TCP扫描的话,不仅要知道IP
的范围还需要知道那那几个端口是服务器有可能开的
端口,(你不会从1到65535一起扫描,除非你~~~~~)
如果用UDP广播以后,IP和端口都可以根据返回的数据
动态确定。
 
这样的话,客户端就不用配置东西了,但是也没有必要作一个UDP线程吧。
还有,客户端扫描的是局域网内的机子,局域网机子的host可以在客户端扫描到的。(只要
得到本局域网的机子列表就OK了)这样就不用还个扫描ip 了,只要扫描本网内的机子就行了。
另外就是端口,这个可能是使用socket最大的弊端,必须实现约定好。
 
for 张无忌
把你的QQ打开,我是‘桶漆底脱’了。我们qq上聊吧
 
关于端口,你做的程序可以把服务器和客户端都定死,ip地址是可以根据你安装的PC不同
而更改,到时候客户端就通过这个端口发广播包,服务器收到后把它的ip地址回给客户端
不就行了吗
 
其实你不用线程没有任何问题:)
 
>>只要得到本局域网的机子列表就OK了
问题是你如何得到,还不是要扫描,用广播多容易。没有循环,发个消息出去就等着收消息把
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
744
DelphiTeacher的专栏
D
D
回复
0
查看
749
DelphiTeacher的专栏
D
D
回复
0
查看
764
DelphiTeacher的专栏
D
后退
顶部