2
我的目標是向/從服務器應用程序發送和接收簡單的字節數組(簡單的Java工具,以30字節返回所有請求的固定響應)。通過TCP發送/接收字節數組
我已經完成了第一部分(發送通過TCP字節數組)用下面的代碼:
# Define port and target IP address
[int] $Port = 2222
$IP = "172.16.0.51"
$Address = [system.net.IPAddress]::Parse($IP)
# Create IP Endpoint
$End = New-Object System.Net.IPEndPoint $address, $port
# Create Socket
$Saddrf = [System.Net.Sockets.AddressFamily]::InterNetwork
$Stype = [System.Net.Sockets.SocketType]::Stream
$Ptype = [System.Net.Sockets.ProtocolType]::TCP
$Sock = New-Object System.Net.Sockets.Socket $saddrf, $stype, $ptype
$Sock.TTL = 26
# Connect to socket
$sock.Connect($end)
# Create byte array
# TCP [Byte[]] $Message = 0xAA,0x55,0x00,0x12,0x00,0x00,0x00,0x7B,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0xD6,0xDE,0xD5,0xA7,0x14,0x00
[Byte[]] $Message = 0xAA,0x55,0x00,0x12,0x00,0x00,0x00,0x7B,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0xD6,0xDE,0xD5,0xA7,0x14,0x00
# for ($i=0; $i -le 1000; $i++)
# {
# Send the byte array
$Sent = $Sock.Send($Message)
"{0} characters sent to: {1} " -f $Sent,$IP
"Message is: $Message"
# End of Script
# }
但我無法查找/添加/創建他們只發出這樣的請求後,接收響應代碼。任何人都可以幫助我嗎?
謝謝。
不足。您忽略了接收方法返回的返回值,即EOS指示,錯誤指示或接收數據的長度。相反,您假設讀取已填充整個緩衝區。你不能假設與TCP。 – EJP
EJP,謝謝你的好評。我無法在此評論中發佈相關代碼,因此會爲此創建單獨的答案。 – TShark