各位高手,最近我在写一个局域网即时通信软件,要求是(局域网内发送消息和传送文件),从网上看过了一些资料和代码,但是,对于程序启动时,如何用UDP进行广播获取在线用户的IP,和文件发送这两个方面不是很清楚,恳请高手们指点。界面如下链接http://blog.163.com/lizhonglin_2000/editPhoto.do?albumId=-1&photoId=fks_087064081082080075092087085064072087080066083086094071092080]我的QQ是583586123 ,邮箱地址:[email protected].
1.每个用户上线时,向服务器注册,同时读取在线用户列表
2.软件需要有握手机制,启动时通过udp发送握手信号,所有运行软件接收握手信号后,发送回复信息,信息中包含用户信息
用socket写的,每个客户端都有一个serversocket和clenitsocket
没这样实现过,不是很清楚,说说你的实现方法,或许大家能提出点建议
然后再设置对方主机的IP地址,创建一个ClientSend线程用来把从文字输入框中获取的信息发送到对方(IP地址)对应的服务器中,对方的服务器就接收消息,大体是这样的
现在我要实现的就是,通过A机获取本机地址,(UDP)然后广播到A机所在的网段中,如果B机收到A机发来的IP地址,那么就存入IP列表(Listbox)中,每隔3秒广播一次,Listbox中每隔10秒清空一次,更新在线用户在线列表,当点击列表中的某个IP就将对方主机的IP地址(RemoteHost)设置成所选取的IP地址,这样就可以发送消息了。
关键的是,目前的用TCP 多线程(服务端一个线程,客户端一个线程,阻塞式的)实现的这个东西在局域网中接收消息时,慢得要死,要20秒,所以,恳请各路高手指点迷津。
可以,但是建议楼主在通讯的时候采用TCP的方式!因为之前我写的一个类似的程式,采用的是UDP的方式!发送检测好友是否在线的消息,但是返回的结果有时候会不正确,尤其是当端口号被别的程序占用之后!
也可能是我的程式问题!呵呵!
不过我改成TCP的方式之后,一切OK!