socket通信问题请教

flying_bug 2002-05-31 01:26:52

我想在jsp中使用socket.利用applet 与服务器端的jsp/servlet 通信。
可我不知道要将启动servrsocket的类放在何处。
我打算把它放在index.jsp中的jspinit()中。
在一个IE打开这个网页/网站后,jspinit()中启动socket服务器端, 假设它监听的端口为3333。
可是我担心:
如果在另外一台机器上,或重新打开一个IE浏览器运行index.jsp时,是不是还要进行一次启动Serversocket的操作?
而且会出现错误(因为刚才已经将3333端口打开了,再次运行serversocket使用该端口,会提示该端口已经被使用了。)

所以想请教各位高手,应该将初始化的socket类放在哪里?

或者采用bean scope=application .可不可以呢?在一处运行后,另一处运行还会再次打开该端口吗?
还是放在servlet 的init()方法中,我自己也搞糊涂了。

我只想让服务器端的servrsocket 只开一次监听端口,无需多次打开。一个session 进来,就直接和它建立socket 连接就行。

不知这个问题如何解决,我的思路是不是很幼稚?谢谢!!!
...全文
116 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
flying_bug 2002-05-31
  • 打赏
  • 举报
回复
如果是这样那就太好了,谢谢!我已经被折磨一个上午了!!!
dylanwolf 2002-05-31
  • 打赏
  • 举报
回复
如果在另外一台机器上,或重新打开一个IE浏览器运行index.jsp时,是不是还要进行一次启动Serversocket的操作?

不用。服务器只在客户端第一次访问该网页时,创建 jsp对应的 servlet (jspinit), 以后服务器只通过线程来相应客户端请求。所以你只需在 jspinit()里启动 serversocket就可以了。

bbshero 2002-05-31
  • 打赏
  • 举报
回复
因为刚才已经将3333端口打开了:
SockefServer s
........
s.close()
flying_bug 2002-05-31
  • 打赏
  • 举报
回复
实际使用中,会单独起一个的进程来控制需要的SERVER SERVICE,因为SERVER总是常开的。根据自己的需要来
-----这句话我不太明白。不好意思,呵呵(这个进程又放在什么地方?)
salute 2002-05-31
  • 打赏
  • 举报
回复
放在servlet 的init(),但创建一个SERVER进程一般还是写在BEAN里,捕捉EXCEPTION就可以避免端口重复,或者用SINGLETON,或者....。
实际使用中,会单独起一个的进程来控制需要的SERVER SERVICE,因为SERVER总是常开的。根据自己的需要来

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧