◥〓★〓◤-在线等待(QQ:9531511) 一个超难的问题,请版主予以解答或者其他有能力解决者(关于在IE中网页中嵌入.NET Windows 控件的难题)

stardicky 2005-01-17 11:50:45
这是一个示例程序,只是为了证明这个问题的存在性,(我怀疑这个是 Microsoft 的 Bug),这是一个嵌入在网页的Socket 通讯程序

我有两个Socket 服务器程序, 一个程序是侦听UDP 消息, 一个是侦听 TCP 消息

客户端是放在网页中的控件,注意 客户端的.NET 的安全性我已经设置成完全信任,所以应该不是安全性的问题

问题:
如果这个控件放在Web中,那么这两个客户端发送第一条消息的时候非常慢(大概2分钟后才发送成功),但是可以发送成功, 以后发送的消息就很快了!

如果这个控件放在WinForm中,发送消息很正常

代码如下:
TcpServer.cs

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace TcpServer
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
try
{
Socket server = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
IPEndPoint ipep = new IPEndPoint(IPAddress.Any,5200);
server.Bind(ipep);
server.Listen(10);

Console.WriteLine("服务器套接字开始侦听......");

while(true)
{
Socket Client = server.Accept();
Console.WriteLine("发现一个客户端......");
byte[] buffer = new byte[1024];
Console.WriteLine("正在接收数据......");
int recv = Client.Receive(buffer);
Console.WriteLine(Encoding.Default.GetString(buffer,0,recv));
Console.WriteLine("正在发送数据......");
Client.Send(Encoding.Default.GetBytes(DateTime.Now.ToString()));
Client.Close();
}
}
catch(Exception ex)
{
Console.WriteLine(ex.Message + "\n" + ex.StackTrace);
}
}
}
}

//----------------------------------------------------------------------------------------
UdpServer.cs

using System;
using System.Text;
using System.Net;
using System.Net.Sockets;

namespace UdpServer
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
Socket server = new Socket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);
IPEndPoint ipep = new IPEndPoint(IPAddress.Any,5201);
server.Bind(ipep);
IPEndPoint sender = new IPEndPoint(IPAddress.Any,0);
EndPoint Remote = (EndPoint)sender;
while(true)
{
byte[] buffer = new byte[1024];
Console.WriteLine("正在等待数据......");
int recv = server.ReceiveFrom(buffer,ref Remote);
Console.WriteLine("接收到数据......");
Console.WriteLine(Encoding.Default.GetString(buffer,0,recv));
Console.WriteLine("正在发送数据......");
server.SendTo(Encoding.Default.GetBytes(DateTime.Now.ToString()),Remote);
Console.WriteLine("数据发送完毕......");
}
}
}
}
//---------------------------------------------------------------------------------------
TcpClientControl.cs

using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;

using System.Net;
using System.Net.Sockets;
using System.Text;


namespace Control
{
public class UserControl1 : System.Windows.Forms.UserControl
{
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.Button button1;
...........................
...........................
private void button1_Click(object sender, System.EventArgs e)
{
try
{
Socket client = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("192.168.10.6"),5200);
client.Connect(ipep);

client.Send(Encoding.Default.GetBytes(this.textBox1.Text.Trim()));

byte[] buffer = new byte[1024];

int recv = client.Receive(buffer);

this.textBox2.Text = Encoding.Default.GetString(buffer,0,recv);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message + "\n" + ex.StackTrace);
}
}
}
}

//-------------------------------------------------------------------------------------
UdpClientControl.cs
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;

using System.Text;
using System.Net;
using System.Net.Sockets;

namespace UdpControl
{
public class UserControl1 : System.Windows.Forms.UserControl
{
private System.Windows.Forms.Button button1;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.TextBox textBox1;
.....................................................
.....................................................
private void button1_Click(object sender, System.EventArgs e)
{
byte[] buffer = new byte[1024];

IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("192.168.10.6"),5201);

Socket server = new Socket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);

server.SendTo(Encoding.Default.GetBytes(this.textBox1.Text.Trim()),ipep);

IPEndPoint Sender = new IPEndPoint(IPAddress.Any,0);

EndPoint Remote = (EndPoint)Sender;

int recv = server.ReceiveFrom(buffer,ref Remote);

this.textBox2.Text = Encoding.Default.GetString(buffer,0,recv);
}
}
}


//-------------------------------------------
网页代码.....
,.......
...全文
1142 83 打赏 收藏 举报
写回复
用AI写文章
83 条回复
切换为时间正序
请发表友善的回复…
发表回复
marvelstack 2005-01-23
  • 打赏
  • 举报
回复
http://blog.csdn.net/zhzuo/category/82770.aspx
CROWN 2005-01-22
  • 打赏
  • 举报
回复
我也觉得是的,有一个办法,可以解决 在客户端装 Framework 2.0 可以解决这个问题!

TO:pray1997(pray1997)

谢谢了!
qozms 2005-01-21
  • 打赏
  • 举报
回复
haha
kentpower 2005-01-21
  • 打赏
  • 举报
回复
关注!!!
xueqs 2005-01-21
  • 打赏
  • 举报
回复
gz
844 2005-01-21
  • 打赏
  • 举报
回复
关注!!!

大家也关注下我的贴子!!!

http://community.csdn.net/Expert/topic/3742/3742940.xml?temp=.7004206

stardicky 2005-01-21
  • 打赏
  • 举报
回复
谢谢大家的支持,我们一起来探讨这个问题!
stardicky 2005-01-21
  • 打赏
  • 举报
回复
Activex 控件是绝对行的,但是不能回避这个问题!

代码是对的,我觉得是IE 安全的问题,就是不知道在哪里做手脚而已!
north_star 2005-01-21
  • 打赏
  • 举报
回复
你不妨使用VB6再作一个客户端的控件,先确定是那端的问题,正在试验中
programmer11 2005-01-21
  • 打赏
  • 举报
回复
好难哦,帮你顶
lhsoft 2005-01-21
  • 打赏
  • 举报
回复
mark
盗奶的夜猫 2005-01-21
  • 打赏
  • 举报
回复
学习关注中
stardicky 2005-01-21
  • 打赏
  • 举报
回复
其实我原来的代码就是异步通讯的,后来为了简单地说明问题的存在,所以就写成了同步通讯!

但是问题没有解决!

请版主予以关注......
stardicky 2005-01-21
  • 打赏
  • 举报
回复
请版主予以关注......
elite2018 2005-01-21
  • 打赏
  • 举报
回复
经过研究我发现这个似乎是一个Bug,应该是由于线程死锁所造成的。
CROWN 2005-01-21
  • 打赏
  • 举报
回复
TO:pray1997(pray1997)

是吗? 你的意思就是说客户端,用Framework 2.0 就可以了吗?

我试一下!
Jinpanxu 2005-01-21
  • 打赏
  • 举报
回复
mark
stardicky 2005-01-21
  • 打赏
  • 举报
回复
Framework 1.1 SP1
pray1997 2005-01-21
  • 打赏
  • 举报
回复
不过我虽然用1.1编译的组件,打开网页的时候需要调节的却是2.0的安全级别,不知道最终程序集是在哪个clr下跑
pray1997 2005-01-21
  • 打赏
  • 举报
回复
奇怪,我这里很正常,第一条消息很快,3秒以内
加载更多回复(63)
内容概要:本文基于Matlab/Simulink平台,对电励磁同步电机在异步牵入、稳态运行及能耗制动三个阶段的全周期动态特性进行建模仿真与系统研究。研究构建了完整的电机数学模型与仿真系统,重点分析了电机从异步启动到同步运行的过渡过程、稳态运行时的电磁与机械性能,以及执行能耗制动时的减速特性与能量耗散机理。通过仿真,揭示了励磁电流、负载转矩与转速在不同工况下的动态响应规律与耦合关系,为电机的控制策略设计与性能优化提供了理论依据和数据支持。; 适合人群:具备电机学、电力电子与电力拖动基础知识的电气工程及相关专业的研究生、科研人员与工程技术人员。; 使用场景及目标:①研究电励磁同步电机的启动特性,解决异步牵入过程不稳定或失败的问题;②分析电机在不同负载下的稳态运行性能,优化运行效率;③设计和验证能耗制动策略,精确控制制动过程的减速时间和能量消耗。; 阅读建议:在学习过程中,应结合电机的基本原理,深入理解仿真模型中各模块(如电机本体、励磁控制、负载模型)的搭建逻辑,并通过调整仿真参数(如励磁电压、负载大小)来观察和分析系统动态响应,以加深对电机全周期运行特性的理解。
内容概要:通过介绍短时倒谱(Cepstrogram)计算方法,开展时-倒频分析研究,深入探讨倒谱分析机理、短时倒谱构建逻辑及时-倒频分析的内涵。文中系统对比了时-倒频分析与全局倒谱、传统时频分析方法的差异,阐明其在卷积特征解耦、非平稳信号跟踪、微弱周期特征增强及多维特征融合方面的技术优势,并分析其在语音识别、机械故障诊断、音频处理和非平稳时序信号分析中的典型应用,同时指出其在分辨率、计算复杂度等方面的局限性并提出优化方向。; 适合人群:具备一定信号处理或数据分析基础,从事机械、通信、声学或自动化等领域研究的研发人员及研究生。; 使用场景及目标:① 掌握短时倒谱与时-倒频分析的理论基础与实现方法;② 应用于语音信号处理、机械设备故障诊断、音频相似性检测等工程实践;③ 对比传统方法,提升对复杂非平稳信号中隐含周期特征的识别能力; 阅读建议:此资源以Matlab代码实现为核心,强调理论与实践结合,建议读者在理解核心算法原理的基础上,动手运行代码并调试参数,结合具体应用场景深化对方法适用性与局限性的认识。
摘 要 在数字经济与保险行业深度融合的背景下,传统保险服务普遍存在流程繁琐、信息不对称、线下办理效率低、管理成本高、理赔不透明等问题,已难以适应用户便捷化服务需求与行业数字化发展趋势。推动保险业务线上化、服务智能化、管理平台化,成为提升保险服务质量与运营效率的关键路径。 本文以在线保险服务与管理平台为研究对象,依据软件工程规范,采用 Spring Boot + Vue.js 前后端分离架构,结合 MySQL 数据库完成系统设计与实现。平台面向普通用户与管理员两类角色,涵盖注册登录、保险产品展示、在线投保、智能核保、保单管理、理赔申请、消息通知、保险知识科普、后台管理及数据统计等核心功能,实现保险服务全流程线上化、投保便捷化、保单管理智能化、理赔过程透明化、后台运营高效化。 系统依次完成需求分析、总体设计、详细设计、功能实现与全面测试。测试结果表明,平台在功能完整性、接口响应性能、数据安全防护及多浏览器兼容性方面均达到设计目标,运行稳定可靠。该平台可有效改善传统保险服务痛点,提升用户体验与管理效率,可为保险行业数字化转型提供实用的工程实践参考。 关键词:在线保险;服务平台;Spring Boot;Vue.js;前后端分离;保险数字化

111,128

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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