【问题标题】:php and c# tcp communication problemphp和c#tcp通信问题
【发布时间】:2011-06-10 04:48:43
【问题描述】:

好的,我正在开发一个在端口 4 上充当服务器的 c# 应用程序。我的网站上的一个 php 脚本充当客户端。它可以连接到服务器,但是,当服务器或客户端尝试发送数据时。数据原来只是随机数和符号。 下面的脚本

PHP:

$msg = $host + " connected;";
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, $host, 4);
socket_write($socket, $msg, strlen($msg));
socket_close($socket);

C#:

while (heartbeat == false)
                {
                    if (listener.Pending())
                    {
                        heartbeatC = listener.AcceptTcpClient();
                        //heartbeatS = listener.AcceptSocket();
                        NetworkStream heartBeatStream = heartbeatC.GetStream();
                        string heartbeatEP = heartbeatC.Client.RemoteEndPoint.ToString();
                        string heartbeatIP = heartbeatEP.Remove(heartbeatEP.IndexOf(':'), heartbeatEP.Length - heartbeatEP.IndexOf(':'));
                        if (heartbeatIP == Dns.GetHostAddresses("***.********.com")[0].ToString())
                        {
                            dottime.Enabled = false;
                            Console.WriteLine("\nHeartbeat.");
                            bool heartbeatR = false;
                            while (heartbeatR == false)
                            {
                                if (heartBeatStream.DataAvailable)
                                {
                                    //StreamReader sr = new StreamReader(heartBeatStream);
                                    byte[] message = new byte[1024];
                                    int bytesRead = 0;
                                    bytesRead = heartbeatC.Client.Receive(message);
                                    ASCIIEncoding encoder = new ASCIIEncoding();
                                    string msg = encoder.GetString(message);
                                    Console.WriteLine("Server: " + msg);
                                    heartbeatR = true;
                                }
                            }
                            heartbeat = true;
                        }
                        else
                        {
                            heartbeatC.Client.Disconnect(true);
                        }
                    }
                }

【问题讨论】:

  • 无关提示:使用using statement 确保正确关闭流和套接字等资源。现在,“随机数字和符号”是指它们每次运行都不同(随机),或者它们始终相同,但错误?
  • 我恢复了您的更改(您删除了整个问题!)。顺其自然,以供将来可能遇到相同问题的其他人参考。这就是 StackOverflow 的全部意义所在。 ;)

标签: c# php sockets tcp packet


【解决方案1】:

我认为你的问题在于这一行:

$msg = $host + " connected;";

PHP中的字符串连接运算符是.:

$msg = $host . " connected;";

【讨论】:

  • IMO 这是一个简单的错误,不应该让您感到尴尬。这是一个小的语法错误,我每隔一段时间就用 PHP 做一次,因为我主要做 C# 工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-24
  • 2014-10-28
相关资源
最近更新 更多