2017-01-23 4 views
0

私は私のwinformsアプリケーションのためにしたのと同じように、私のUWPアプリケーション用のソケットを扱うDLLファイルを作成しようとしています。問題は、私はちょうどUWPアプリケーションを書くことになっています。私の元のソケットコントロールDLLファイルは受信スレッドを開始し、100ミリ秒ごとにソケットから読み取り、イベントを発生させます。私はUWP DLLで同じことをやってみましたが、MSDNのWebサイトからコピーしたコードでは動作しません。誰かが見て、私が間違っていることを見ることができますか?私はうそをつくつもりではありません。以前は仕事をしたことがありませんでした。どうすれば私のソケットバッファUWPから読み込むことができません

PSでは、データの接続と送信が機能することを確認しました。

編集:自分のコードを少し変更しました。しかし、まだ動作しません。任意のアイデアの人々ですか?

データが送信されても​​、下の行を過ぎているようには見えません。

暗いDataTextとして文字列= Reader.ReadToEnd受信タスクに以下のコードで解決

Imports Windows.Networking 

Imports Windows.Networking.Sockets 

Public Class ClientSocket 

Private CSocket As New StreamSocket 

Dim strHost As String = "192.168.0.11" 

Dim RPort As String = "80" 

Private killswitch As Boolean = False 

Public Event SocketError(ByVal Operation As String, ByVal ErrorMessage As String) 

Public Event DataReceived(ByVal DataString As String) 

Public Async Sub Connect() 

    Try 

     Dim RHost As HostName = New HostName(strHost) 

     Await CSocket.ConnectAsync(RHost, RPort) 

     ReceiveTask.Start() 

    Catch ex As Exception 

     RaiseEvent SocketError("Connecting", ex.Message) 

    End Try 

End Sub 

Public Sub Disconnect() 

    killswitch = True 

    CSocket.Dispose() 

End Sub 

Public Async Sub SendText(ByVal SendString As String) 

    Try 

     Dim OutStream As Stream = CSocket.OutputStream.AsStreamForWrite 

     Dim Writer As StreamWriter = New StreamWriter(OutStream) 

     Await Writer.WriteLineAsync(SendString) 

     Await Writer.FlushAsync 

    Catch ex As Exception 

     RaiseEvent SocketError("Sending", ex.Message) 

    End Try 

End Sub 

Private ReceiveTask As New Task(Sub() 

            Dim InStream As Stream = CSocket.InputStream.AsStreamForRead 

            Dim Reader As StreamReader = New StreamReader(InStream) 

            While killswitch = False 

             Try 

              Dim DataText As String = Reader.ReadToEnd 

              RaiseEvent DataReceived(DataText) 

             Catch ex As Exception 

              RaiseEvent SocketError("Receiving", ex.Message) 

             End Try 

             Task.Delay(TimeSpan.FromSeconds(1)) 

            End While 

           End Sub) 

Public Property Host As String 

    Get 

     Host = strHost 

    End Get 

    Set(value As String) 

     strHost = value 

    End Set 

End Property 

Public Property Port As String 

    Get 

     Port = RPort 

    End Get 

    Set(value As String) 

     RPort = value 

    End Set 

End Property 

End Class 

答えて

0

Private ReceiveTask As New Task(Sub() 

            Dim InStream As Stream = CSocket.InputStream.AsStreamForRead 

            While killswitch = False 

             Try 

              Dim Reader As StreamReader = New StreamReader(InStream) 

              Dim DataText As String = "" 

              While Reader.Peek <> -1 

               DataText &= Convert.ToChar(Reader.Read) 

              End While 



              RaiseEvent DataReceived(DataText) 

             Catch ex As Exception 

              RaiseEvent SocketError("Receiving", ex.Message) 

             End Try 

            End While 

           End Sub) 
関連する問題