我在 linux 上运行 tcp 服务器,虽然我可以在该服务器上运行 php -f test.php,但我需要从 Windows 客户端执行此操作并返回结果。php 客户端脚本如下所示:
$Host = "192.168.2.70";
$Port = 8189;
$Socket = socket_create(AF_INET, SOCK_STREAM, 0) or die ("Error \n ".socket_strerror());
$Result = socket_connect($Socket, $Host, $Port) or die ("Error \n ".socket_strerror(socket_last_error()));
$message = 'CMD1;1;5;0;F;20130426;'."\n";
socket_write($Socket, $message, strlen($message)) or die ("Error \n ".socket_strerror());
$Result = '';
while($buf = socket_read($Socket, 2048 )) {
$Result = $Result.$buf;
}
socket_close($Socket);
$handle = fopen ('./test.xml', "w");
fwrite($handle, $Result, strlen($Result));
fclose($handle);
?>
和我喜欢的 C# 客户端:
IPAddress ipAddress = IPAddress.Parse("192.168.2.70");
IPEndPoint remoteEP = new IPEndPoint(ipAddress,8189);
Socket sender = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp );
try {
sender.Connect(remoteEP);
Console.WriteLine("Socket connected to {0}",sender.RemoteEndPoint.ToString());
byte[] msg = Encoding.ASCII.GetBytes("'CMD1;1;5;0;F;20130426;'.'\n';");
int bytesSent = sender.Send(msg);
// Receive the response from the remote device.
int bytesRec = sender.Receive(bytes);
Console.WriteLine("Echoed test = {0}",
Encoding.ASCII.GetString(bytes,0,bytesRec));
不幸的是,它已连接但返回未知命令消息。PHP 脚本在本地工作正常,但来自 Windows 客户端的 C# 不能,有什么提示吗?无法在 linux 中调试服务器代码。
谢谢