Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net NullReferenceException(System.Text.Encoding.ASCII.GetBytes)_.net_Vb.net_Nullreferenceexception - Fatal编程技术网

.net NullReferenceException(System.Text.Encoding.ASCII.GetBytes)

.net NullReferenceException(System.Text.Encoding.ASCII.GetBytes),.net,vb.net,nullreferenceexception,.net,Vb.net,Nullreferenceexception,关于这段代码,我已经彻底改变了主意。NullReferenceException仅在运行时发生 Public Sub SendData(ByVal b As String) Dim data(2048) As Byte data = System.Text.Encoding.ASCII.GetBytes(b) stream.Write(data, 0, data.Length) End Sub 其目的是获取一个字符串,并将该字符串的字节流传送到另一台计算机。代码的str

关于这段代码,我已经彻底改变了主意。NullReferenceException仅在运行时发生

Public Sub SendData(ByVal b As String)
    Dim data(2048) As Byte
    data = System.Text.Encoding.ASCII.GetBytes(b)
    stream.Write(data, 0, data.Length)
End Sub
其目的是获取一个字符串,并将该字符串的字节流传送到另一台计算机。代码的stream.Write部分是引发NullReferenceException部分的部分。但是,我通过调试检查了数据部分是否从代码的编码部分获取字节。所以我不确定它为什么抛出NullReferenceException。

您需要声明一个新的。另外,按如下方式调暗字节数组:

 Dim myBuffer() As Byte = Encoding.ASCII.GetBytes(b)
 myNetworkStream.Write(myBuffer, 0, myBuffer.Length) 
你需要申报一个新的。另外,按如下方式调暗字节数组:

 Dim myBuffer() As Byte = Encoding.ASCII.GetBytes(b)
 myNetworkStream.Write(myBuffer, 0, myBuffer.Length) 

我猜
您还没有用
new
关键字初始化
stream
对象。看

还有几件事:

1) Do not initialize your byte array yourself. Let this task done by the `GetBytes` to return an initialized array and just store it in a variable.

2) Before writing to stream always check if you get something in your stream or not. 
类似于:(未经测试

公共子发送数据(ByVal b作为字符串)
如果(b不是零,也不是String.IsNullOrEmpty(b)),那么
Dim data()的形式为Byte=System.Text.Encoding.ASCII.GetBytes(b)”,或改用List。
如果(数据不是零,也不是data.Length>0),则stream.Write(数据,0,data.Length)
其他的
'传入数据为空
如果结束
“别忘了关上小溪
端接头

希望有帮助

我猜
您没有用
new
关键字初始化
stream
对象。看

还有几件事:

1) Do not initialize your byte array yourself. Let this task done by the `GetBytes` to return an initialized array and just store it in a variable.

2) Before writing to stream always check if you get something in your stream or not. 
类似于:(未经测试

公共子发送数据(ByVal b作为字符串)
如果(b不是零,也不是String.IsNullOrEmpty(b)),那么
Dim data()的形式为Byte=System.Text.Encoding.ASCII.GetBytes(b)”,或改用List。
如果(数据不是零,也不是data.Length>0),则stream.Write(数据,0,data.Length)
其他的
'传入数据为空
如果结束
“别忘了关上小溪
端接头

希望有帮助

流在
Dim stream处声明为NetworkStream
。不确定这是否正确。流在
Dim stream声明为NetworkStream
。不确定这是否正确。非常感谢!你的答案和另一个答案都非常有用,非常感谢!你的答案和另一个答案都非常有用谢谢!这真的很有帮助。@DonA,伙计,我也提到了其他的事情,你没有提到。我的猜测与你的答案无关,而是OP在问题顶部发表的评论。在许多这样的问题中,人们对稍微不同的事情有相同的答案。所以要积极礼貌,谢谢!这真的很有帮助。@DonA,伙计,我也提到了其他的事情,你没有提到。我的猜测与你的答案无关,而是OP在问题顶部发表的评论。在许多这样的问题中,人们对稍微不同的事情有相同的答案。所以要积极和礼貌。