1.通讯中,做的一个线程对应一个Socket连接,这样当连接过3000时线程就超过了3000。这样就很不稳定,有什么好的解决办法?
2.因为上边的原因,我想过通讯完马上断开连接,然后使用线程池去优化,但是这样一来,就会出来下面的问题:
U1向U2发消息,两用户均是内网用户,如果两用户不能建立p2p连接,消息将不能通过服务器中转,因为Server和U2的连接已经断开了,Server无法主动向U2发起连接。
3.关于Java中点对点连接,请问谁能提供一些资料,或者代码加上另外两贴,共三百分,解决问题,全部送给大家
http://community.csdn.net/Expert/topic/4939/4939427.xml?temp=.9230158
http://community.csdn.net/Expert/topic/4939/4939442.xml?temp=.4796564
2.因为上边的原因,我想过通讯完马上断开连接,然后使用线程池去优化,但是这样一来,就会出来下面的问题:
U1向U2发消息,两用户均是内网用户,如果两用户不能建立p2p连接,消息将不能通过服务器中转,因为Server和U2的连接已经断开了,Server无法主动向U2发起连接。
3.关于Java中点对点连接,请问谁能提供一些资料,或者代码加上另外两贴,共三百分,解决问题,全部送给大家
http://community.csdn.net/Expert/topic/4939/4939427.xml?temp=.9230158
http://community.csdn.net/Expert/topic/4939/4939442.xml?temp=.4796564
解决方案 »
- 关于修改选项卡标题的问题
- 【switch】java中不支持String,那么是否意味这可以放弃switch?
- hashCode()的用法
- java新手求助关于import javax.servlet.*的问题
- 一个窗体显示的难问题,请教!
- 急!!!jbuilder 2005怎样发布文件
- 请问如何在排序表格中改变单元格中文字的颜色或背景色?
- 可用appletviewer运行的小应用程序, 却不能被IE显示,帮帮忙!
- j2sdk1.4.0-beta3中有无sun.jdbc.odbc.JdbcOdbcDriver,有的话,在哪?
- VC++--->VJ++?
- 文件上传下载问题,请看代码.
- 怎么自己写个ABS取绝对值函数阿?
Server: 服务器。
Storage: 用于暂时保存需要中转的消息。1 User登录
User发送自己当前所在的通讯地址(TCP/IP地址)给Registar,Registar保存或更新该通讯地址,并维持与User的心跳,以保证User的通讯地址的有效性。在User登录的同时,Registar告知Server该消息,由Server检查Storage,看是否有要发给User的中转消息,如果有则下发给User。2 UserA发送消息
UserA要发送消息给UserB,UserA首先询问Registar,向Registar要UserB的通讯地址,得到后直接向UserB发送消息,如果发送消息失败,或是得不到UserB的地址,则将消息发送给Server,Server尝试转发,如果转发失败,将消息保存到Storage中,以后再发。
MainThread: Server的主线程,侦听端口,接收消息为SocketData,并将SocketData放到MessageQueue中。
SocketData: 保存接收到的消息和User的Socket。
MessageQueue: 消息队列,用于保存SocketData。
WorkThread: 工作线程,可以有多个同时处理,专门一个个处理MessageQueue中的SocketData。简略的伪码如下:class SocketData
{
SOCKET m_acceptedSocket;
Message m_msg;
...
};MainThread:
...
Socket.Listen;
while(Continue)
{
SocketData.m_acceptedSocket = Socket.Accept;
MessageQueue.Put(SocketData);
...
}
...WorkThread:
...
while(Continue)
{
SocketData = MessageQueue.Get();
DoSomething(SocketData);
...
}
...
短连接的话, U1向U2发消息,两用户均是内网用户,如果两用户不能建立p2p连接,消息将不能通过服务器中转,因为Server和U2的连接已经断开了,Server无法主动向U2发起连接。问题应该怎么解决呢?