做过ICQ或CHAT ROOM的请进。

xxmm 2001-08-25 12:54:01
我想搞知道ICQ或是CHATROOM是如何工作的。
如果客户用的是APPLET而不是下载的CHAT或是ICQ软件,那么这个APPLET会与一个SERVLET传递信息。如果个系统在不同的国家有不同的一个SERVER,为了简单化,每个SERVER上只有一个SERVLET负责与APPLET互相传递信息。问题是,当中国的SERVLET收到一个APPLET请求与英国的朋友交换信息。我不可能让两个APPLET之间用SOCKET,而是让它们通过SERVLET,这两个SERVLET如何交互?
谢谢!


...全文
614 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
violetrose 2001-08-31
  • 打赏
  • 举报
回复
my mail:huang@echinagro.com
xxmm 2001-08-30
  • 打赏
  • 举报
回复
Hi, Could you please leave your email?
violetrose 2001-08-29
  • 打赏
  • 举报
回复
single thread 和multi thread没有区别啊,能不能找到request的source是不用你自己考虑的,socket自己会做的。

你自己试验一下不就行了,假如servletA是做加法的,接收两个参数a,b,返回a+b:
public class ServletA extends HttpServlet
{
...
public void service(HttpServletRequest req,HttpServletresponse res)
{
try{
int a = Integer.parseInt(req.getParameter("a"));
int b = Integer.parseInt(req.getParameter("b"));
res.getWriter.println(a+b);
}catch(Exception e){}
}
...
}


你在servletB中打开一个指向servletA的URLConnection看看结果不就行了?
public class ServletB extends HttpServlet{
....
public void service(HttpServletRequest request,HttpServletResponse response)
{
...
HttpURLConnection httpCon = new HttpURLConnection(new URL("http://server.uk/servletA?a=10&b=20"));
....
}
}

自己试试不就知道了?
xxmm 2001-08-29
  • 打赏
  • 举报
回复
violetrose?
我还是不清楚,URLCONNECTION是否能够判断得出是哪一个线程发出的REQUEST并且准确无误的返回给SERVLET的这个线程一个RESPONSE。如果是SINGLE THREADED,我还凑合能想得通,但是如果是线程的话,URLCONNECTION仍旧能够找到发出REQUEST的SOURCE并将它作为RESPONSE的DESTINATION发回吗?
谢谢。帮我弄清楚我一定给分。
xxmm 2001-08-29
  • 打赏
  • 举报
回复
single threaded model里有多个SERVLET的INSTANCE,multithreaded里只有一个SERVLET的INSTANCE。URLconnection足以判明是一个OBJECT里的哪一个THREAD在和它通信,是这样吗?

我的信箱:bugaoxing@263.net
xxmm 2001-08-29
  • 打赏
  • 举报
回复
很想一试。:)
能跟我合作做这个试验么?我只有一个SERVER。
xxmm 2001-08-28
  • 打赏
  • 举报
回复
问题是如果RESPONSE回给用户以后,用户就继续开始下面的操作,而绝不会等待SERVLET去打开另一个SOCKET(是否能在SERVER 端打开另一个SOCKET,有谁作过这样的试验?因为我只有一个SERVER,谁有兴趣我们可以合作试一下这种分布式开发???),然后再继续下一部处理。

比方说,我发出一个1,等待的是另一个SERVER上的用户看到1后回复一个1,如果这样做,OK,即使我可以打开另外一个SOCKET(我怀疑),等我接受到返回来的RESPONSE以后,我会作为一个新的REQUEST重新开启一个线程的。不是这样吗?

我不能确定,希望大家帮助。我现在首先想知道,有谁做过,知道一种确实可行的解决方式。
violetrose 2001-08-28
  • 打赏
  • 举报
回复
public void service(HttpServletRequest request,HttpServletResponse response)
{
request.getParameter();...response.write();...|| forward()...// 返回html页面之类的操作

HttpURLConnection httpCon = new HttpURLConnection(new URL("http://server.uk/yourservlet"));
....
}
xxmm 2001-08-27
  • 打赏
  • 举报
回复
很好。
我有一个问题,SERVLET是不可能打开一个SOCKET与另外一个SERVLET通话的对吧?
你的方案是让我另建一个SERVER端的OBJECT,用来当作另一个SERVLET的客户端进行通话是这样的吗?
换一句话也就是,两个在不同地区的SERVLET之间是绝不可能直接通信的,是这样吗?

请回复。
violetrose 2001-08-27
  • 打赏
  • 举报
回复
那个静态类或许可以这么写:
public static class DataSycUtil{
static Socket socket;
static OutputStream os;
static ServerSocket serverSocket;//如果有多个服务器的化,换用数组
static
{
try
{
socket = new Socket("remoteHost",yourPort);

}
catch (SocketException se)
{
serverSocket = new ServerSocket(yourPort);
socket = serverSocket.accept();
}
os = socket.getOututStream();
}

public static int synchronize()
{
os.write();//或者用ObjectOutputStream再包装一下
}
}

注意,这只是说明,而不是代码。供参考
violetrose 2001-08-27
  • 打赏
  • 举报
回复
只用servlet来做服务器的话,或许只有通过http的方式(普通的或是soap等)才比较现实。
即使这样的话,servlet之间也一样可以通过http来交换信息。在需要同步信息的时候实例化一个HttpURLConnection连接到异地的服务器不就行了?不过如果异地之间频繁的交换数据,而每次数据量又不是很大,反复的实例化HttpURLConnection肯定挺费的;倒不如写一个静态类,在服务器间建立不关闭的socket,负责数据的同步。
xxmm 2001-08-27
  • 打赏
  • 举报
回复
SERVLET用HTTP与客户端进行通信是由SERVLET ENGINE完全管理的,我不知道SERVLET可以自己打开一个URLCONNECTION到另外一个SERVLET上,如何做?当客户端接收到一个HTTPREQUEST,开始这个线程,然后呢?请给段简单代码示例。
(事实上到了今天,我认为这样两个SERVLET是没有办法通信的)但是我希望有人有过这样的经验或是看到过这样的示例。
violetrose 2001-08-27
  • 打赏
  • 举报
回复
实际上HttpURLConnection也是打开一个连接到远程服务器的80端口的socket连接,呵呵

Java中,两台机器通过socket建立tcp的连接,是其中一台先初始化一个ServerSocket进行监听,被动的等待另一台来建立连接。所以假如不利用web端口,我们就需要自己在中国机器的servlet线程里初始化一个ServerSocket,并且在另一个时候在英国的机器的servlet线程里来连接,这看来在servlet线程短暂的生命期里不是很现实,是不是?

其实也不是不可以。其实只要让服务器端的某一个servlet线程(即创建ServerSocket的那个)生命期无限长,就一切都可以解决。用一个while(true){}不就行了?嘿嘿

>>两个在不同地区的SERVLET之间是绝不可能直接通信的,是这样吗?

不是很明白你的意思,具体指什么?

violetrose 2001-08-26
  • 打赏
  • 举报
回复
在servlet之间建立一个socket连接不就行了。
反正就是你的server(不管是application还是servlet)开一个数据同步的线程,负责各地的服务器之间的数据的同步就是了。
数据传输(server2server,server2client,client2server)其实也不一定用普通的http,可以考虑用soap,或是自己开个socket直接传对象不也可以?
xxmm 2001-08-26
  • 打赏
  • 举报
回复
首先我想不通SERVLET不用HTTP该如何传输数据。
你能不能给一小段代码,让SERVLET1传给SERVLET2一个int类型的数据1。
SERVLET2的地址假设是100.100.100.0:8080
xxmm 2001-08-26
  • 打赏
  • 举报
回复
不同服务器上的两个SERVLET之间如何用SOCKET???
xxmm 2001-08-25
  • 打赏
  • 举报
回复
Somebody gotta help me.
内容概要:本文详细介绍了一个基于Python的校园招聘平台的设计与实现,旨在通过信息化手段提升校园招聘的效率与精准度。平台采用Python主流框架(如Django/Flask)构建,涵盖用户权限管理、招聘与简历数据建模、智能匹配推荐、日志监控与统计分析等核心模块。系统支持学生、企业、就业部门等多角色协同,通过结构化数据模型和业务流程控制,实现了岗位发布、简历投递、状态流转、权限校验等功能,并结合TF-IDF与余弦相似度算法实现简历与岗位的智能匹配。代码示例展示了用户角色模型、企业岗位模型、简历分表设计、投递状态机、权限装饰器及推荐服务等关键实现,体现了系统的可扩展性与安全性设计。; 适合人群:具备Python Web开发基础,熟悉Django或Flask框架,有一定数据库设计和前后端交互经验的开发者,尤其是从事教育信息化、招聘系统开发或校园服务平台建设的研发人员;也适合计算机相关专业高年级本科生或研究生作为毕业设计参考。; 使用场景及目标:① 构建高校内部统一的校园招聘管理系统,替代传统低效的线下招聘模式;② 实现学生与企业岗位的智能匹配与个性化推荐,提升人岗匹配效率;③ 为企业和高校就业部门提供数据驱动的招聘分析与决策支持;④ 学习多角色权限控制、状态机设计、ORM建模、缓存与异步任务等实际开发技巧。; 阅读建议:此资源以实际项目为导向,不仅提供完整模型设计与代码片段,还深入剖析了系统架构与业务逻辑。建议读者结合代码示例搭建本地开发环境,动手实践模型定义、API接口开发与推荐算法集成,并重点关注权限控制、数据安全与性能优化等关键设计,以全面提升全栈开发与系统设计能力。

81,108

社区成员

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

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