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