用jbuilder7写的applet在IE中为什么不能接受UDP信息?(50分)

  • 主题发起人 主题发起人 songguolong
  • 开始时间 开始时间
S

songguolong

Unregistered / Unconfirmed
GUEST, unregistred user!
[red]在JBUILDER调试时很正常,当小程序(用UDP协议)放入HTML文件中,在IE中可以向服务
程序发送,却不能接受。察JAVA控制台信息,出现了:
com.ms.security.SecurityExceptionEx[chat/chatclient.init]: cannot access 0
哪位有经验的大侠能指教一二?[/red
 
IE的限制。浏览器沙箱里的applet不能监听端口(包括TCP/UDP),不过倒是可以连接
出去。
唯一解决办法:数字签名。
缺点:浏览的时候会弹出警告对话框,无法避免。
我前段时间刚好研究过这个,所以有些心得。
 
一个过客你好,我正被此问题所困惑。望能指教。数字签名怎么做?能告我一下吗?另外,
163聊天室就是用的小程序监听TCP口,好象并没有弹出框呀?
 
http://chat.163.com/
 
经实验,可用TCP,不能用UDP同发出APPLET的主机连接,这是为什么?
 
难道APPLET不可以从驻留的服务器上用UDP监听消息吗?为什么在IE中出现
com.ms.security.SecurityExceptionEx[chat/chatclient.init]: cannot access 1668(口)
的错误?
 
>>163聊天室就是用的小程序监听TCP口
如何证明?我看了看,没看到applet呀?
>>经实验,可用TCP,不能用UDP同发出APPLET的主机连接
没看懂,TCP本来就可以连出去。UDP根本就是无连接的协议,你所谓的连接指的是什么?
>>难道APPLET不可以从驻留的服务器上用UDP监听消息吗
是的,我前面已经说了。即使是TCP也不能监听端口,只能连出去
>>cannot access 1668
意思就是不能监听这个端口
>>数字签名怎么做?能告我一下吗
不知道你用什么开发工具。如果用VJ++,它自己带一个测试用的数字签名,jbuilder就不知道了


 
一个过客:你好!谢你关注我的问题!
以下是163聊天室的框架页:
<HTML><HEAD><TITLE>40-50岁</TITLE>
<META content="text/html;
charset=gb2312" http-equiv=Content-Type>
<META content="MSHTML 5.00.2614.3500" name=GENERATOR>
</HEAD>
<FRAMESET borderColor=#fbf8e6 frameBorder=0 rows=70,*,85>
<FRAME name=head noResize scrolling=no src="40-50岁.files/163.htm">
<FRAMESET cols=*,20%>
<FRAMESET id=chatframe rows=*,0>
<FRAME name=all src="40-50岁.files/all.htm">
<FRAME name=single src="40-50岁.files/single.htm">
</FRAMESET>
<FRAME name=userlist noResize src="40-50岁.files/userlist.htm">
</FRAMESET>
<FRAME name=bottom noResize scrolling=no src="40-50岁.files/bottom.htm">
</FRAMESET>
</HTML>
>>如何证明?
applet就在bootom.htm里,而且我取得了其中的小程序进行分析,确实是TCP,这是肯定的。
>>你所谓的连接指的是什么
我的意思没有表达清楚:TCP可以联接(当然是发出和监听都没问题,这是分析源程序得到的
结论),那么用UDP也可以发出和监听来自小程序主机的服务程序吧?然而我实验的结果是
可以发出去,不能监听,这是为什么?
 
不明白,按照你说的,我看到163那个java,然后看了一下源代码,发现的确没有监听
任何端口啊!在那个chat.java代码里面唯一和socket有关的语句就是:
public void init()
{
...
try
{
xxx = new Socket(xxx, xxx);
这是连接远程服务器,不是在本地监听啊!搞清楚再提问哦!
 
你说得很对,就是监听服务器的,但为什么用UDP却不能呢?这正是我的问题呀
 
你没听明白,我的意思是说,163的那个程序里面
xxx = new Socket(xxx, xxx);
并不是监听本地端口,而是连接远程服务器。 任何java applet如果不授权的话,都不能
监听本地端口。
 
这么长时间了,我还以为你没看到呢,谢谢你的关注。
对不起,是我没说明白。
用TCP联接远程服务器后,实际上启用了一个本地端口,从而可以收到从服务器发来的信息,
及向服务器发信息。
但我要采用UDP协议,如何和服务器收发信息呢?现在实验的结果是只能发,不能收。也就
是监听时出现安全例外问题。有办法解决吗?请详细指教为盼。
是不是非得数字签名?这方面的资料少得很,能告诉我吗?我可以加分的!祝好!
 
这个问题我觉得一个过客说的已经很明白了,确实是只需要连接远程就可以了,不需要
监听端口的。songguolong 应该是对TCP的连接过程理解有误,希望多学习一下网络编程
的基础知识,首先搞清楚连接方向不等同于数据传输方向这个道理。
>> 用TCP联接远程服务器后,实际上启用了一个本地端口,从而可以收到从服务器发来的信息,
>> 及向服务器发信息。
这里的“启用”不是“监听”!这个端口的性质与监听端口的性质截然相反!
只要建立了TCP连接就可以发送和接收数据,不用为了接收数据而监听端口。UDP协议方面我
不太了解,是不是一定要监听端口请高手指点。
 
TCP是面向联接的协议,只要联接出去,当然既能收,又能发,这一点已无问题。但TCP开
销太大,而用UDP则小的多(非联接协议)。但目前的问题是UDP只能发送,不能监听(不
能接受,安全例外)。如果是浏览器沙箱不允许的话,大概需要数字筌名。那么程序员可
以做数字签名吗?如何做?除了数字答名还有没有其他方法。
 
多人接受答案了。
 
后退
顶部