在网页中能否用applet实现两个客户端的直接通信?急!!! 鍙兘涓嶅彲浠ュ惂銆傛垜璇翠笉濂姐€侸ava 楂樻墜浠€庝箞浼氬杩欎釜闂缃箣涓嶇悊锛燂紵锛燂紵锛燂紵 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不能具体情况请参见http://www.linuxaid.com.cn/developer/showdev.jsp?i=331 、用java.net包建立双向通讯 第二种方法是利用java.net包提供的网络能力。以有连接流通讯方式为例,在服务器端的操作为一般为: ⑴ 创建一个ServerSocket对象,在指定端口监听客户端发来的请求。 ⑵ 在接收到请求时accept()方法将返回一个Socket对象。 ⑶ 用上述Socket对象创建输入、输出流对象。 ⑷ 通过输入、输出流与客户交互。 ⑸ 交互完毕,关闭输入、输出流与Socket。 ⑹ 服务程序运行结束,关闭ServerSocket。 实现代码代码类如: try{ boolean flag=true; Socket clientSocket=null; ServerSocket serverSocket = new ServerSocket(0); System.out.println("Server listen on: " +serverSocket.getLocalPort()); while(flag){ clientSocket=serverSocket.accept(); DataInputStream is=new DataInputStream( new bufferedInputStream(clientSocket.getInputStream())); PrintStream os=new PrintStream( new bufferedOutputStream(clientSocket.getOutputStream())); // 处理Applet请求 os.close(); is.close(); clientSocket.close(); } serverSocket.close(); }catch( IOException e){ System.err.println(" Exception: "+e); } 在客户端的操作为: ⑴ 创建Socket对象建立与服务器的连接。 ⑵ 用该Socket对象创建输入、输出流。 ⑶ 与服务器交互。 ⑷ 交互完毕,关闭输入、输出流与Socket。 实现代码类如: try { Socket clientSocket =new Socket("serverName",7); OutputStream os=clientSocket.getOutputStream(); DataInputStream is=new DataInputStream( clientSocket.getInputStream()); // 其它操作. os.close(); is.close(); clientSocket.close(); }catch(Exception e){ System.err.println("Exception:"+e); } 这种方法只依赖于标准的Java网络支持,不需要用到附加的软件包或工具, 因此显得相当简洁和灵活,易于实现某些特殊的需要。但在另一方面,服务器端对进入请求以及客户端对返回结果的分析工作量较大。如果服务器端要执行大量的操作,可以考虑使用RMI。 新手小白问题 大家推荐一本比较好的servlet和jsp的学习书籍 急!! 怎样动态获取网页数据使用控制台输出 TOMCAT的问题????怎么可以让左键单击可以直接下载 提示这类错误是什么原因? 如何从页面向servlet里传递二维数组? 自定义标签如何才能支持scriptlet? struts调运mysql存储过程问题 实现图片和文字的混排效果,如何将特殊标志转换成图片?请各位指点? c3p0 不能连接到oracle数据库 关于数据库插入的问题 Resin服务器新版本问题
具体情况请参见http://www.linuxaid.com.cn/developer/showdev.jsp?i=331
第二种方法是利用java.net包提供的网络能力。以有连接流通讯方式为例,在服务器端的操作为一般为:
⑴ 创建一个ServerSocket对象,在指定端口监听客户端发来的请求。
⑵ 在接收到请求时accept()方法将返回一个Socket对象。
⑶ 用上述Socket对象创建输入、输出流对象。
⑷ 通过输入、输出流与客户交互。
⑸ 交互完毕,关闭输入、输出流与Socket。
⑹ 服务程序运行结束,关闭ServerSocket。
实现代码代码类如:
try{
boolean flag=true;
Socket clientSocket=null;
ServerSocket serverSocket = new ServerSocket(0);
System.out.println("Server listen on: " +serverSocket.getLocalPort());
while(flag){
clientSocket=serverSocket.accept();
DataInputStream is=new DataInputStream( new bufferedInputStream(clientSocket.getInputStream()));
PrintStream os=new PrintStream( new bufferedOutputStream(clientSocket.getOutputStream()));
// 处理Applet请求
os.close();
is.close();
clientSocket.close();
}
serverSocket.close();
}catch( IOException e){
System.err.println(" Exception: "+e);
}
在客户端的操作为:
⑴ 创建Socket对象建立与服务器的连接。
⑵ 用该Socket对象创建输入、输出流。
⑶ 与服务器交互。
⑷ 交互完毕,关闭输入、输出流与Socket。
实现代码类如:
try {
Socket clientSocket =new Socket("serverName",7);
OutputStream os=clientSocket.getOutputStream();
DataInputStream is=new DataInputStream( clientSocket.getInputStream());
// 其它操作.
os.close();
is.close();
clientSocket.close();
}catch(Exception e){
System.err.println("Exception:"+e);
}
这种方法只依赖于标准的Java网络支持,不需要用到附加的软件包或工具, 因此显得相当简洁和灵活,易于实现某些特殊的需要。但在另一方面,服务器端对进入请求以及客户端对返回结果的分析工作量较大。如果服务器端要执行大量的操作,可以考虑使用RMI。