求一个b/s结构的socket,非常感激 客户端既然用Applet,那建议你开一个线程,每隔一段时间就访问一下服务器的Servlet上把信息取回来处理,不难的,你看看线程和net包,应该很快就能搞定. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可我想用SOCKET来完成通信,服务器端用application完成一些简单的处理,不想在服务器端用SERVLET,因为我对servlet也不很了解. 大家帮帮忙呀,我写的Applet socket报错:exception:com.ms.security.SecurityException[HOST]:cannot access "IP":8000我换了好几个端口都报安全错误,谁有这方面的经验给说说.谢谢了 你若是装了天网就关掉它!防火墙有时会禁掉很多端口的.只用Socket的话,那就由客户端发送一些如"start","end"之类的字符做为控制符,服务端接到这些控制符后就做相应的处理,我一般上都是这么做的,不用Servlet也无所谓. 不是说applet只能和提供该applet的源主机建立 socket连接吗,怎么我的在同一台机子上不行呢,关了防火墙也不行,还是报安全错误,听说签名和授权可以解决,具体该怎么做呢,那位大侠给讲讲呀,我的程序改成APPLICATION就运行良好,在applet中就是不行,郁闷. 如果applet和源主机建立 socket是可以的,SecurityException的异常应该是host或port的问题,监听客户端的socket()要建立一个匿名的端口,不要指定端口,不然,如果不释放这个端口,那再重起ie后就会出问题! applet缺省设置有很多限制,你需要改JRE下面的security属性文件才可以。很就以前我改过一次,现在具体操作不记得了。。要不去网络上面搜索下。 我已经把java.security中socketpermission改成全部允许了,但还是不行.sandy1314(sandy) 说的端口没释放是什么意思,怎么建立匿名端口,如果是这个原因那该怎么处理一下呢. 将程序放上来大家看看:服务器端:import java.net.*;import java.io.*;public class warnserv extends Thread{ int port=4000; ServerSocket ssoc=null; String val; Socket soc=null; DataInputStream instream=null; DataOutputStream outstream=null;public warnserv(){ try { ssoc=new ServerSocket(port); System.out.println("jian li"); } catch(IOException e){System.out.println(e.toString());}}public void star(){ try { soc=ssoc.accept(); System.out.println("ok"); instream=new DataInputStream(soc.getInputStream()); outstream=new DataOutputStream(soc.getOutputStream()); ......客户端:import java.applet.*;import java.awt.*;import java.util.*;import java.io.*;import java.net.*;public class warnclient extends Applet implements Runnable{ DataInputStream in=null; DataOutputStream out=null; String[] strin=null; String sin; String warnlevel; Thread mythread; String equipmentid; URL u; Socket soc=null;public void init(){ } public void start(){ //通过socket连接服务器 try{ URL u=this.getCodeBase(); String hostname=u.getHost(); // InetAddress addr = InetAddress.getLocalHost(); soc=new Socket(hostname,4000); //与服务器建立连接 in=new DataInputStream(soc.getInputStream()); //服务器发送过来的输入流 out=new DataOutputStream(soc.getOutputStream()); // 客户端输出流 mythread=new Thread(this); mythread.start(); }catch(IOException e){System.out.println("error:"+e);} } public void run() { try { Thread.sleep (3000); }catch(Exception e){System.out.println("error");} //out.writeUTF("search"); while(true) { try{ sin=in.readUTF(); 我用的是UPD协议,你用的是TCP协议,所以我的思路不适用你!呵呵 我写的C/S结构socket用同样的端口通信没问题,可怎么写成B/S APPLET形式就不行,而且是客户、服务器在同一台机子上,狠心改了policy也没效果。大家看看我的policy对吗。grant { permission java.security.AllPermission; permission java.net.SocketPermission "*", "accept, connect, listen, resolve";};为什么没效果 我用policytool时,界面显示之后弹出一个错误:could not find policy file c:\documents and settings\administrator\.java.policy这个错误对policy 的权限设置有影响吗?我把java.policy考到这个目录下也没作用. 请教一个正则表达式 小生特来祝贺大家新年快乐!!顺便问几个问题!谢谢捧场! javac XXX.java编译后出现如下信息,但又能正常运行 帮忙看一下这个程序,错误怎么样解决? 高手请进!一个棘手的问题。。 如何判断 字符串的编码方式 struts国际化的问题 请问在JAVA中怎样用图形(曲线)来表示各个时间段内的数据变化?(分不够,可再给) 不信没人懂JAVA eclipse的自动生成toString报错了,怎么解决啊! 项目开发:多媒体网络教学 急问:利用什么方法可将两个CheckBox值与某一信息绑在一起??
我换了好几个端口都报安全错误,谁有这方面的经验给说说.谢谢了
防火墙有时会禁掉很多端口的.
只用Socket的话,那就由客户端发送一些如"start","end"之类的字符做为控制符,服务端接到这些控制符后就做相应的处理,我一般上都是这么做的,不用Servlet也无所谓.
要不去网络上面搜索下。
sandy1314(sandy) 说的端口没释放是什么意思,怎么建立匿名端口,如果是这个原因那该怎么处理一下呢.
服务器端:
import java.net.*;
import java.io.*;public class warnserv extends Thread
{
int port=4000;
ServerSocket ssoc=null;
String val;
Socket soc=null;
DataInputStream instream=null;
DataOutputStream outstream=null;
public warnserv()
{
try
{
ssoc=new ServerSocket(port);
System.out.println("jian li");
} catch(IOException e){System.out.println(e.toString());}
}
public void star()
{
try
{
soc=ssoc.accept();
System.out.println("ok");
instream=new DataInputStream(soc.getInputStream());
outstream=new DataOutputStream(soc.getOutputStream());
......客户端:
import java.applet.*;
import java.awt.*;
import java.util.*;
import java.io.*;
import java.net.*;public class warnclient extends Applet implements Runnable
{
DataInputStream in=null;
DataOutputStream out=null;
String[] strin=null;
String sin;
String warnlevel;
Thread mythread;
String equipmentid;
URL u;
Socket soc=null;
public void init()
{
}
public void start()
{ //通过socket连接服务器
try{
URL u=this.getCodeBase();
String hostname=u.getHost();
// InetAddress addr = InetAddress.getLocalHost();
soc=new Socket(hostname,4000); //与服务器建立连接
in=new DataInputStream(soc.getInputStream()); //服务器发送过来的输入流
out=new DataOutputStream(soc.getOutputStream()); // 客户端输出流
mythread=new Thread(this);
mythread.start();
}catch(IOException e){System.out.println("error:"+e);}
}
public void run()
{
try {
Thread.sleep (3000);
}catch(Exception e){System.out.println("error");}
//out.writeUTF("search");
while(true)
{
try{
sin=in.readUTF();
呵呵
grant {
permission java.security.AllPermission;
permission java.net.SocketPermission "*", "accept, connect, listen, resolve";
};
为什么没效果
could not find policy file c:\documents and settings\administrator\.java.policy
这个错误对policy 的权限设置有影响吗?我把java.policy考到这个目录下也没作用.