C# Socket 异步如何接收网页数据?

问题描述

publicstaticbyte[]ReceiveBodyData(Socketsocket){List<byte>list=newList<byte>();intnowContentLength=0;while(true){byte[]buffer=newbyte[BUFFER_SIZE];intreceiveCount=socket.Receive(buffer,BUFFER_SIZE,SocketFlags.None);if(receiveCount>0){for(inti=0;i<receiveCount;i++){list.Add(buffer[i]);}nowContentLength+=receiveCount;}if(receiveCount==0){break;}}returnlist.ToArray();}

上面是使用同步方式接收网页数据效率非常慢看到网上说异步性能比较高,但是网上例子基本千篇一律晦涩难懂来这里请教大家

解决方案

解决方案二:
能帮我把上面的例子更改为异步的么?
解决方案三:

解决方案四:
你这是在网页里面用TCP通信,谁跟谁通信的?
解决方案五:
网页???tcp?????
解决方案六:
引用4楼diaodiaop的回复:

网页???tcp?????

大神,那要是网页里面实现socket通信,都必须跟网页写个webservice吗,我现在就是在网页用的udp通信,就是有个问题,网页每次发送消息,就会占用一个udp端口,而相应的进程所占用的内存就会增加。确实网页直接用socket通信,问题很大。最近没时间看webservice,等看了再向你请教下
解决方案七:
引用5楼yalunwang123的回复:

Quote: 引用4楼diaodiaop的回复:
网页???tcp?????

大神,那要是网页里面实现socket通信,都必须跟网页写个webservice吗,我现在就是在网页用的udp通信,就是有个问题,网页每次发送消息,就会占用一个udp端口,而相应的进程所占用的内存就会增加。确实网页直接用socket通信,问题很大。最近没时间看webservice,等看了再向你请教下

用WEBSOCKET试试。
解决方案八:
我不管你是tcp还是udp..首先来说你一定有一个服务器比如IP=A而且一般情况下你这个网站也是扔在了A上面..那么你socket都是本地玩本地啊..就算你用客户端的浏览器浏览实际上还是A连接A而已..虽然这个A连接A在某个特定功能的需求上是可以这样.不过显然你一定以为你是客户端连接服务端是吧.网页就是网页.跟CS是完全不同的2个东西..别总把玩CS那一套扔到BS上面..而且这个东西跟webservice没什么关系..你是不是NBA的小号?
解决方案九:
引用7楼diaodiaop的回复:

我不管你是tcp还是udp..首先来说你一定有一个服务器比如IP=A而且一般情况下你这个网站也是扔在了A上面..那么你socket都是本地玩本地啊..就算你用客户端的浏览器浏览实际上还是A连接A而已..虽然这个A连接A在某个特定功能的需求上是可以这样.不过显然你一定以为你是客户端连接服务端是吧.网页就是网页.跟CS是完全不同的2个东西..别总把玩CS那一套扔到BS上面..而且这个东西跟webservice没什么关系..你是不是NBA的小号?

是的,我两个账号,你之前不是说用webservice,那网页里面怎么实现点一个按钮就可以发出一个UDP通信的数据,
解决方案十:
LZ申请这么多小号问这么多问题也是蛮拼的了..不过你首先你要清楚你要做什么...要实现什么...(从物理的角度来讲)比如你就说"我要实现任何人浏览网页都能控制我(某)电脑串口的LED灯的开关"或者说"我要实现网页实时查询我(某)电脑串口LED灯的开关状态".至于上面的2个问题我只是随便说的不不知道你是不是玩的Arduino你连自己要实现什么都不知道..就开始问各种socket各种协议各种解析各种问题...难道你认为你可以很完美的把这些问题的解决方案贯穿一起吗?很明显youcannot....甚至你根本连控制或者是查询整套流程你都不知道如何实现...不从根本入手,.半路杀出来一个问题..那么下一段路还是有问题..所以最终你1个月甚至更多的时间只是在浪费问"技术"问题..到头来你会发现你还是个零蛋.还是不明白最多就了解了一点关于tcp或者udp简单收发的的知识所以我给LZ一点忠告..看下我给你回复的内容(NBA的帖子带图的)仔细看文字看图形并且自己拿个A4+2B画下来..对你将要开发的东西是有好处的...
解决方案十一:
嘿嘿,这个帖子不是我发的,我已经加过你的QQ了,有空再向你探讨吧。感谢你的耐心回答
解决方案十二:
引用9楼diaodiaop的回复:

LZ申请这么多小号问这么多问题也是蛮拼的了..不过你首先你要清楚你要做什么...要实现什么...(从物理的角度来讲)比如你就说"我要实现任何人浏览网页都能控制我(某)电脑串口的LED灯的开关"或者说"我要实现网页实时查询我(某)电脑串口LED灯的开关状态".至于上面的2个问题我只是随便说的不不知道你是不是玩的Arduino你连自己要实现什么都不知道..就开始问各种socket各种协议各种解析各种问题...难道你认为你可以很完美的把这些问题的解决方案贯穿一起吗?很明显youcannot....甚至你根本连控制或者是查询整套流程你都不知道如何实现...不从根本入手,.半路杀出来一个问题..那么下一段路还是有问题..所以最终你1个月甚至更多的时间只是在浪费问"技术"问题..到头来你会发现你还是个零蛋.还是不明白最多就了解了一点关于tcp或者udp简单收发的的知识所以我给LZ一点忠告..看下我给你回复的内容(NBA的帖子带图的)仔细看文字看图形并且自己拿个A4+2B画下来..对你将要开发的东西是有好处的...

嘿嘿,这个帖子不是我发的,我已经加过你的QQ了,有空再向你探讨吧。感谢你的耐心回答
解决方案十三:
引用9楼diaodiaop的回复:

LZ申请这么多小号问这么多问题也是蛮拼的了..不过你首先你要清楚你要做什么...要实现什么...(从物理的角度来讲)比如你就说"我要实现任何人浏览网页都能控制我(某)电脑串口的LED灯的开关"或者说"我要实现网页实时查询我(某)电脑串口LED灯的开关状态".至于上面的2个问题我只是随便说的不不知道你是不是玩的Arduino你连自己要实现什么都不知道..就开始问各种socket各种协议各种解析各种问题...难道你认为你可以很完美的把这些问题的解决方案贯穿一起吗?很明显youcannot....甚至你根本连控制或者是查询整套流程你都不知道如何实现...不从根本入手,.半路杀出来一个问题..那么下一段路还是有问题..所以最终你1个月甚至更多的时间只是在浪费问"技术"问题..到头来你会发现你还是个零蛋.还是不明白最多就了解了一点关于tcp或者udp简单收发的的知识所以我给LZ一点忠告..看下我给你回复的内容(NBA的帖子带图的)仔细看文字看图形并且自己拿个A4+2B画下来..对你将要开发的东西是有好处的...

就是你上面说的那两个问题,类似的。不是Arduino

时间: 2024-11-16 12:06:19

C# Socket 异步如何接收网页数据?的相关文章

Asp.net中C#使用Socket发送和接收TCP数据示例

程序代码  代码如下 复制代码 using System; using System.Collections.Generic; using System.Net; using System.Net.Sockets; using System.Text; namespace ConsoleApplication1 {     public static class SocketTest     {         private static Encoding encode = Encoding.

java nio socket 异步接收数据

问题描述 nio socket 异步接收数据,如何确定收接的数据,就是发送的返回的?有谁研究过没. 问题补充:如果不用id,nio客户端是否可以同步接收数据呢?是把socketChannel.configureBlocking(true)吗? 解决方案 在消息中增加UUID,在调用端记录UUID,并将UUID和消息一起发送到服务端,服务端的回传消息附件上UUID,调用端根据收到的消息包含的UUID确定给哪个调用者.解决方案二:异步调用的常见问题.因为没有办法实施返回,只有打标志了.要你把通信协议

andord socket连接网站,怎么获取网页数据

问题描述 andord socket连接网站,怎么获取网页数据 可以连上baidu.com ,但是到readline(),就卡助了...怎么获取数据阿,或者是显示出百度的主页,求救

php-怎么判断网页数据接收结束?

问题描述 怎么判断网页数据接收结束? 我要通过post向一个接口获取数据,查询过程我添加了一个遮罩提示正在查询,数据获取结束之后关闭遮罩层再弹出一个显示结果的层,我该怎么判断程序已经读取玩数据了呢? 解决方案 返回一个标识符行吗,让接口返回一个可以判断的标识符,通过这个标识符来判断.或者通过response的状态码,如果为200表示已经返回了.试试,看看行吗 解决方案二: 如果是银行那种接口,都会默认返回一个post值,然后通过判断接口的返回内容.

数据接收-C# socket接收单片机数据问题

问题描述 C# socket接收单片机数据问题 单片机通过wifi将采集到传感器的数据传至上位机,单片机是每一秒发送一组数据,如"0xaa,0x55,'采集到的数据1','采集到的数据2'"问:怎样才能接收数据并判断第一个是"0xaa"并且第二位是"0x55"时候将"采集到的数据1"和"采集到的数据2"拿出来并整合合,下一秒也是这样循环下去,我现在只能做到接收数据.private byte[] m_rece

jquery的ajax异步请求接收返回json数据实例_jquery

jquery的ajax异步请求接收返回json数据方法设置简单,一个是服务器处理程序是返回json数据,另一种就是ajax发送设置的datatype设置为jsonp格式数据或json格式都可以. 代码示例如下: 复制代码 代码如下: $('#send').click(function () {     $.ajax({         type : "GET",         url : "a.php",         dataType : "json

Socket 通信 接收的数据包被分为多个

问题描述 客户端向服务端通过GPRS发送数据的时候,客户端发送的是一个数据包,但是服务端接受的时候发现那个数据包被分成两个子数据包.但是相同的数据包客户端通过其他方式发给服务端时,服务端能够接受一个完整的数据包.请问一下这个是什么原因.谢谢! 解决方案 解决方案二:面向连接的tcp,本来就是如此的.如果你不理解为什么会分包.粘包,那你就使用更为简单的可靠的http(它是tcp上更为可靠的实现).解决方案三:你所谓的数据包,是应用程序的数据包,跟底层的数据包是两回事(有些人总把tcp底层协议的数据

浅谈PHP接收POST数据方式

  本文给大家简单介绍了下php接收post数据的3种方式,并附上了一则简单的示例,有需要的小伙伴可以参考下 通常情况下用户使用浏览器网页表单向服务器post提交数据,我们使用PHP接收用户POST到服务器的数据,并进行适当的处理.但有些情况下,如用户使用客户端软件向服务端php程序发送post数据,而不能用$_POST来识别,那又该如何处理呢? $_POST方式接收数据 $_POST方式是通过 HTTP POST 方法传递的变量组成的数组,是自动全局变量.如使用$_POST['name']就可

TCP通信socket异步,客户端报异常:目标主机积极拒绝

问题描述 TCP通信socket异步,客户端报异常:目标主机积极拒绝 服务端只监听时,客户端建立1500个连接请求都可以正常建立连接,但当服务端改成建立连接后触发一个事件给客户端发送数据时,客户端异常:目标主机积极拒绝,只能建立部分连接.是何原因,希望有老师可以指点一下.不胜感激!! 解决方案 Socket(Tcp)通信客户端 解决方案二: 客户端接收的数据是否正确处理,然后就是看一下你服务器发送数据给客户端后,是不是关闭了连接