为什么Socket连接会失败?

xm4014 2003-03-05 02:01:01
局域网内两台机器a,b
服务器端Applet程序运行在a的浏览器上
客户端Applet程序运行在b的浏览器上

客户端的Applet中socket连接的程序是这样写的

s=new socket("202.114.55.30",4321);

IP和端口号都是正确的,为什么总是运行到这个地方来就没反应了?

假如客户端Applet程序运行在机器a上,也就是和服务器端Applet程序运行在同一台机器上就连接正常,运行在b上就不行,Why?

...全文
213 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xm4014 2003-03-06
  • 打赏
  • 举报
回复
另外,liukuncn(爱,还记得么?) ,我按照你的方法做出了改动,但似乎没有作用,看来关于限制方面的问题,我还有待学习
xm4014 2003-03-06
  • 打赏
  • 举报
回复
问题解决,

是这样的,假如我在客户端b的浏览器上运行服务器端a机器的客户端Applet程序,则连接正常
假如在客户端b的浏览器上运行客户端b机器上的客户端Applet程序,则不能连接

虽然具体的原因我不清楚,但我相信这是由于liukuncn所解释的浏览器对Java Applet的限制所至,因此结贴
Luke_cn 2003-03-05
  • 打赏
  • 举报
回复
找到你的java.policy文件,添加:
permission java.net.SocketPermission "localhost:5520", "accept,listen,connect,resolve";
具体权限根据你的需求
xm4014 2003-03-05
  • 打赏
  • 举报
回复
iukuncn(爱,还记得么?),你的说法我好像也听说过,具体怎么改才行呢?
xm4014 2003-03-05
  • 打赏
  • 举报
回复
代码很长,只贴出问题的

public void openSocket() throws IOException {
//s=new Socket(url.getHost(),port);
//1
s=new Socket("202.114.55.30",port);
//2
io_in=new DataInputStream(s.getInputStream());
io_out=new DataOutputStream(s.getOutputStream());
}

可以运行到1,却到不了2,抛出的异常一大堆,我不知道用什么方法看得到,因为一屏装不下,闪过去了

Luke_cn 2003-03-05
  • 打赏
  • 举报
回复
客户机上运行Applet的JRE安全策略文件好象默认是禁止开放端口的,你需要改动A机器上的
java.policy文件
surelei 2003-03-05
  • 打赏
  • 举报
回复
把代码贴出来
有没有抛出异常
xm4014 2003-03-05
  • 打赏
  • 举报
回复
另外怎忙捕获连接不成功的异常呢?

62,615

社区成员

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

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