最近、他のコンピューターのデスクトップを表示するアプリを作成することにしました。デスクトップは表示できますが、画像は 1 つしか送信されないようです :? クライアント側でTCPクライアントといくつかのスレッドを使用しています(デスクトップを表示するもの)。サーバーが画像を送信すると、その後ロックされたように見え、応答しなくなります クライアント受信コード:
Private Sub check()
If sock.Connected = True Then
sock.SendTimeout = 5000
Try
Application.DoEvents()
Dim nstream As NetworkStream
Dim bf As New BinaryFormatter
nstream = sock.GetStream
PictureBox1.Image = Nothing
PictureBox1.Image = bf.Deserialize(nstream)
If nstream.DataAvailable = True Then
MsgBox(nstream)
End If
Catch ex As Exception
check()
End Try
End If
End Sub
そして、これはそれを送信するためのコードです 送信コード:
Public Function Desktop() As Image
Dim bounds As Rectangle = Nothing
Dim screenshot As System.Drawing.Bitmap = Nothing
Dim graph As Graphics = Nothing
bounds = Screen.PrimaryScreen.Bounds
screenshot = New Bitmap(bounds.Width, bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
graph = Graphics.FromImage(screenshot)
graph.CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy)
Return screenshot
End Function
Private Sub SendDesk()
If sock.Connected = True Then
Try
Dim nstream As NetworkStream
Dim bf As New BinaryFormatter
nstream = sock.GetStream
bf.Serialize(nstream, Desktop())
Catch ex As Exception
End Try
End If
End Sub
私はしばらく Vb.net でコーディングしてきました (基本的なもの、いくつかの HTTP のもの) が、TCP およびネットワーク ストリームは初めてです。