正在做一个项目要求的局域网内即时传送消息的模块,设计要求是采用TCP/IP C/S模式,S与C为同一个应用程序。初步的想法为程序启动时先作为客户端搜寻网内可用的聊天对象(应用程序另外的一个或多个运行复本)并建立对应的连接,然后作为服务器进入监听,以供后来者搜寻并与之建立连接。运行过程中要求能随时选择要与哪个聊天对象进行交流。
问题如下:
1.如何搜寻网内已经运行的服务器(多个)并建立与它们的联接?(考虑过用广播消息、然后让服务器主动建立连接的方式,是否可行?那样是不是要用UDP才行?)
2.对待这些连接有两种方式:一种是建立一个连接列表,在整个运行期间保持这些连接;另一种是对于搜寻到的每一个服务器保存它的地址信息,并建立一个对应的标识列表,但不保持连接,到要与哪个进行交流时再根据对应的地址信息重新建立连接,一次交流完成即断开连接。哪种方法要好些?
3.可否采用异步方式来实现(如果连接是保持的,连接的双方可以同时发送信息吗?)
4.是否一定要使用多线程?
小弟是socket初鸟,连自己提的这些问题是否表述清楚了都不大肯定。敬请各位大虾不吝赐教!(分不够可以加!)
问题如下:
1.如何搜寻网内已经运行的服务器(多个)并建立与它们的联接?(考虑过用广播消息、然后让服务器主动建立连接的方式,是否可行?那样是不是要用UDP才行?)
2.对待这些连接有两种方式:一种是建立一个连接列表,在整个运行期间保持这些连接;另一种是对于搜寻到的每一个服务器保存它的地址信息,并建立一个对应的标识列表,但不保持连接,到要与哪个进行交流时再根据对应的地址信息重新建立连接,一次交流完成即断开连接。哪种方法要好些?
3.可否采用异步方式来实现(如果连接是保持的,连接的双方可以同时发送信息吗?)
4.是否一定要使用多线程?
小弟是socket初鸟,连自己提的这些问题是否表述清楚了都不大肯定。敬请各位大虾不吝赐教!(分不够可以加!)
解决方案 »
- 2005 和 1169的错误/vc6.0代码移植到vs2010中出现的错误?
- 如何在自绘窗口中 弹出相应快捷方式的系统右键菜单。
- 即将转行~~来问下经验
- 真的没有人会? 加分 加分 加分---------- vc 如何获得当前每个进程cpu的利用率?
- 老婆通过中软的面试了,问一下中软到底如何?
- 请问在GDI+中如何取一个窗口的背景图像?
- 如何把一个自定义的CWnd导出类型对象放入CView,并且显示出来
- rundll32.exe ....dll Func为什么一执行就退出了DLL,可否不退?
- 关于CRecordset使用:
- 问题部分解决,谢谢onestab!请进来领600分!(五)
- 关于位图按钮的讨论!!!
- 怎么使用socket的阻塞模型
这个可以满足你的要求,你可以适当修改一下就可以了。
方便的话,你可以跟我说一下吗?
2.根据你的业务要求,最好用udp,如果用tcp,太慢并且资源耗费太大。
3.你可以隔一定时间广播自己的身份,告知别的服务器
4.不一定用多线程,可以用事件模式
还有一种方法是建立一个数据库或文件,每个服务器端起动后都在数据库中加入自己的IP和端口号.其他程序启动时,对这个数据库就可以了.
2.第一个方法好些,对于系统的资源占用的较少,而且通信可以用udp方式
3.如果连接是保持的,连接的双方可以同时发送信息,这个没有问题.但是一个程序如何处理多个接收?我想可能会用多线程机制.
4.可以考虑使用
另:有人可以给我一个UDP广播的实例吗?