我的程序必須使用套接字編程從服務器讀取數據以終止遠程PC中的進程。 在我從套接字連接轉換netstream後,我將該流轉換爲字符串,但我無法殺死進程,因爲輸入字符串未轉換爲字符串。 我很困惑,因爲我能夠使用字符串方法,如.remove(),但是當我將輸入變量傳遞給函數killProcess時,processessess不會被刪除。如何將(字節)數據流轉換爲Vb.net中的字符串
'socket datastream
If NetStream.DataAvailable Then
Dim bytes(TCPClient.ReceiveBufferSize) As Byte
Dim input As String
NetStream.Read(bytes, 0, CInt(TcpClient.ReceiveBufferSize))
lblConnectStatus.Text = ("Server was disconnected ")
input = Encoding.ASCII.GetString(bytes)
If input.StartsWith("kill") Then
input = input.Remove(0, 4)
Try
KillProcess(input)
Catch ex As Exception
End Try
End if
End if
'kill process function
'this function works when i write the program name manually eg.:"notepad"
'but it doesn't work when i pass the parameter pid for the killProcess() function
Private Sub KillProcess(ByVal pid As String)
For Each P As Process In System.Diagnostics.Process.GetProcessesByName(pid)
P.Kill()
Next
End Sub
由於PID是不是叫什麼名字?你需要'Process.GetProcessById()'......我也不太清楚這裏的網絡部分是如何相關的。 :) – CodeCaster
NET可能會試圖告訴你存在問題,但是你正在吞嚥任何異常 – Plutonix
我不知道你在發送什麼,但它很可能是這樣的:'「kill notepad」'對嗎?如果你使用'.Remove(0,4)',結果將會是''notepad''。注意什麼?開始處有一個空間。你可以通過使用'input.Trim()'來擺脫它。 – MrPaulch