如何将php套接字脚本转换为C#代码?

如何将php套接字脚本转换为C#代码?,c#,php,tcp,C#,Php,Tcp,我在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,

我在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);  

?>
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));
我的客户是这样的:

$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);  

?>
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中调试服务器代码


谢谢

您声明了字节吗?下面是一个发送和接收的示例:yes:byte[]bytes=新字节[1024];我想知道c语言中的消息格式是否好。