在下面给出的代码段中我在Windows应用程序表单中得到错误,但相同的代码适用于控制台应用程序。我是否必须在这方面做出任何考虑?
任何想法都会受到赞赏。
Byte[] bReceive = new Byte[1024];
int i = mySocket.Receive(bReceive, bReceive.Length, 0);
//Convert Byte to String string
sBuffer = Encoding.ASCII.GetString(bReceive);
这在控制台应用程序中工作正常,但我现在尝试在基于表单的应用程序中运行此代码,但我得到GETstring需要参数的错误。任何人都可以表明正确的方向。
由于
答案 0 :(得分:2)
无论您是在控制台还是WinForms应用程序中运行此代码,都应该没有区别。我认为你的代码中的其他地方必定有错误。
从错误消息中猜测,也许您偶然写下了以下内容:
sBuffer = Encoding.ASCII.GetString();
这会出现以下错误:
No overload for method 'GetString' takes '0' arguments
答案 1 :(得分:0)
取决于从套接字接收的数据量
int i = mySocket.Receive(bReceive, bReceive.Length, 0);
'GetString`有一个超载......
//Convert Byte to String string sBuffer = Encoding.ASCII.GetString(bReceive, 0, i);
值得注意的是检查i
的值是否大于1以便先检查,否则如果i
为-1,则上述'GetString'方法可能会失败。
希望这有帮助, 最好的祝福, 汤姆。
答案 2 :(得分:0)
如果您有可能在基于.NET Compact Framework
的表单应用程序上工作,那么可能有一种可能吗?如果是,则不支持此方法。你必须使用
Encoding.GetString(Byte[], Int32, Int32)
方法。