1

コードのこのセクションに関して、私はすべて好転しています。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 をスローする理由がわかりません。

4

2 に答える 2

1

New NetworkStreamを宣言する必要があります。さらに、次のようにバイト配列を暗くします。

 Dim myBuffer() As Byte = Encoding.ASCII.GetBytes(b)
 myNetworkStream.Write(myBuffer, 0, myBuffer.Length) 
于 2013-06-10T05:00:44.903 に答える
0

私の推測では、キーワードyou haven't initializedstream持つオブジェクトです。ここnewを見て

また、いくつかのこと:

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. 

次のようなもの: (未テスト)

Public Sub SendData(ByVal b As String)
    If (b IsNot Nothing AndAlso Not String.IsNullOrEmpty(b)) Then
       Dim data() As Byte = System.Text.Encoding.ASCII.GetBytes(b) ' or use List<Byte> instead.
       If( data IsNot Nothing AndAlso data.Length > 0) Then stream.Write(data, 0, data.Length)
    Else
       ' Incoming data is empty
    End If

    ' Don't forget to close stream
End Sub

それが役に立てば幸い!

于 2013-06-10T05:51:11.407 に答える