当前位置: 技术问答>java相关
关于Servlet与Socket的问题
来源: 互联网 发布时间:2015-05-23
本文导语: 我做了一个即时聊天程序,服务器是用Vc写的。用Vc写了一个客户端,在这种C/S的结构下一切Ok。 我想做一个B/S的,同样的服务器,用Servlet做客户端,并且让两个客户端(C/S B/S)能通信,望大家给点思路! 我刚开...
我做了一个即时聊天程序,服务器是用Vc写的。用Vc写了一个客户端,在这种C/S的结构下一切Ok。
我想做一个B/S的,同样的服务器,用Servlet做客户端,并且让两个客户端(C/S B/S)能通信,望大家给点思路!
我刚开始就发现几个问题:
1.Servlet能否与VC的服务器持续连接,如能具体怎么做?
2.服务器怎么给Servlet客户端发信息,并能标识是发给谁的?
3.怎么将服务器发来的信息写到客户端?
....
谢谢!
我想做一个B/S的,同样的服务器,用Servlet做客户端,并且让两个客户端(C/S B/S)能通信,望大家给点思路!
我刚开始就发现几个问题:
1.Servlet能否与VC的服务器持续连接,如能具体怎么做?
2.服务器怎么给Servlet客户端发信息,并能标识是发给谁的?
3.怎么将服务器发来的信息写到客户端?
....
谢谢!
|
在 Web Server 中, Server 启动后,只会实例化一个 Servlet Instance, 所以标识应该没有问题.
比如说, 你建了一个 InterSocketServlet, 那么 Server 中就只会有一个 InterSocketSrevlet 的实例, 并不是一个 B 一个 InterSocketServlet.
你可以在InterSocketServlet 设立一个socket成员变量 , 在ServletInit方法中就建立和 VC Socket Server 的连接, 这样, 该连接就和 该 Servlet的生命周期一样了.
比如说, 你建了一个 InterSocketServlet, 那么 Server 中就只会有一个 InterSocketSrevlet 的实例, 并不是一个 B 一个 InterSocketServlet.
你可以在InterSocketServlet 设立一个socket成员变量 , 在ServletInit方法中就建立和 VC Socket Server 的连接, 这样, 该连接就和 该 Servlet的生命周期一样了.
|
while(true)
{
try{
strTmp = ms.ReadData();
if(strTmp==null) break;
strData = strData + strTmp + "
";
//加上如下2句
out.println(strData);
out.flush();
}catch(Exception e){
break;
}
}
{
try{
strTmp = ms.ReadData();
if(strTmp==null) break;
strData = strData + strTmp + "
";
//加上如下2句
out.println(strData);
out.flush();
}catch(Exception e){
break;
}
}
|
你所想象的即时聊天程序用你所希望用的方法无法实现:
1。servlet基于http协议的,http协议是无连接的。
2。一个servlet的方法一次服务一个用户。
1。servlet基于http协议的,http协议是无连接的。
2。一个servlet的方法一次服务一个用户。
|
Servlet作为客户端?
Servlet也是运行在服务器上的, 你是说 Servlet作为Socket通讯的客户端吗?
Servlet也是运行在服务器上的, 你是说 Servlet作为Socket通讯的客户端吗?