首页 Soft PlugIn RAN乱 Dev开发 Info资料 English WAP 留言 登陆 注册
-
Posted by Yippee | 评论(0) | 引用(0) | 阅读3234次
C# SOCKET的读取BinaryReader.ReadBytes

由于SGIP采用IP认证,所以我只能先连接到服务器,然后由服务器转发,结果郁闷的事情发生了。昨天我直接连接网关是可以接收到数据的,虽然告诉我认证失败,但是今天却总是不能接收到数据,而用 microsft网络监视器却发现有数据返回。

我原来的代码:

SFTcp t=new SFTcp();
   t.Conn("192.168.15.206",8882);
   t.Send(bsend);
   System.Threading.Thread.Sleep(500);
   Trace.WriteLine("接收数据:"+BitConverter.ToString(t.Rec(60)));

出错信息:

   at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
   at System.IO.BinaryReader.ReadBytes(Int32 count)
   at NetClsLib.SFTcp.Rec(Int32 len) in e:\sf\netclslib\sfsocket.cs:line 95 无法从传输连接中读取数据。
“SGIPSP.exe”: 已加载“c:\winnt\assembly\gac\mscorlib.resources\1.0.5000.0_zh-chs_b77a5c561934e089\mscorlib.resources.dll”,未加载符号。
未处理的“System.ArgumentNullException”类型的异常出现在 mscorlib.dll 中。

修改为:   Trace.WriteLine("接收数据:"+BitConverter.ToString(t.BinRd.ReadBytes(4) )); 则OK。

REC函数只是简单的封装:public byte [] Rec(int len)
  {
   try
   {
    return BinRd.ReadBytes(len);
    }
   catch(Exception e)
   {
    Trace.WriteLine(e.StackTrace+"\t"+e.Message);
    return null;
    }
   }

byte []b=BinRd.ReadBytes(len);
    return b; 这样也可以~~~~~

晕倒!◎#×◎……◎#※…… 现在居然又都可以了!!!!!!!!!!!!!

BinaryReader.ReadBytes 方法  [C#]请参见
从当前流中将 count 个字节读入字节数组,并使当前位置提升 count 个字节。
包含从基础流中读取的数据的字节数组。如果到达了流的末尾,则该字节数组可能小于所请求的字节数。

我怀疑和大小有关,如果读取小于数据流的个数,那么可以,如果读取大于数据流的个数,那么ERROR。


字体:

Permanant URI永久地址 http://www.shengfang.org/blog/p/csharpsocketread.php
Trackback URI引用地址 http://www.shengfang.org/blog/tb.php?tb_id=1120101666

2005年6月30日11:21星期四  [Dev开发] 追踪此文的RSS
提示:
此文还没有评论。

称呼:    登陆   注册
   不注册,但记住我的信息
邮件:
(非必须)
评论: [UBB代码帮助]
粗体 斜体 下划线 链接 水平线 引用



验证码: 请输入你看见的数字
关闭UBB      提交时自动将内容复制到剪贴板

公告
Fire and Motion!

统计信息
[Yippee]||[统计]||日志:1839
在线: 21||用户: 2576 [列表]
今日:2182||到访:2854036
Rss:885216||评论:1604

最新日志

最新评论

友情链接

日历

最新引用

搜索

归档

杂项
Get RSS Feed (Version 2.0)
Get Atom Feed (Version 0.3)
编码:  UTF-8