我做了一个socket服务器段(windows应用程序),然后做了一个socket客户端,如果使用winform来做,响应速度非常快,只要服务器段启动,用不了几秒,但是如果做成windows控件库,在ie里面浏览的时候,速度非常慢,注意:不是连不上,而是时间太长,需要1分钟以上.为什么会这样?有没有好的解决办法?

解决方案 »

  1.   

    这个问题和B/S还是C/S应该无关
    据俺在CSDN回答socket问题的经验... :-)
    一般都是和DNS解析有关,比如Dns.Resolve("10.1.2.3")这样的代码,嗯
    尽量使用IPAddress.Parse("ip string"
      

  2.   

    to Sunmast(速马|一切皆有可能) 
    这个地方可能是有关的,因为我的socket客户端做成了一个windows控件库,在winform下调用和web页面调用所用时间是不一样的,另外我解析的地方,
    服务段如下:
    IPAddress ServerIp=this.GetServerIP();//这是一个函数得到主机ip地址
    IPEndPoint iep=new IPEndPoint(ServerIp,_port);
    this._sc=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
    byte[] ReceiveMessage=new byte[100];  
    this._sc.Bind(iep);
    客户端如下:
    string ip="10.140.102.119";
    string port="8888";
    IPAddress serverIp=IPAddress.Parse(ip);
    int serverPort=Convert.ToInt32(port);
    IPEndPoint iep=new IPEndPoint(serverIp,serverPort);  
    byte[] SendMessage;  
    Socket sendsocket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
    sendsocket.Connect(iep);  
    应该说是没有问题的,如果你不介意,我可以贴的更详细一些
      

  3.   

    你的意思是写了个ActiveX,放在web页面上,然后通过网页调用?
    这里的代码看上去没什么问题
    你可以执行单步调试,看看是哪一行等待时间最长
      

  4.   

    是的,sendsocket.Connect(iep); --->这一行
      

  5.   

    另外就是按照上面的写法,我在winform中调用客户端以后,点击连接以后,一下就过去了,但是web页面中就不行了,想死了一样,连的时间太长了
      

  6.   

    没试过,可能在IE调用底层时会有一系列的其他动作,不像 WinForm 那样!