PHP客户端和C#服务器 - 由于超时而无法通信

时间:2011-11-18 03:34:03

标签: c# php sockets tcp communication

我对套接字编程很新,但这里什么也没做。

我一直在尝试在C#服务器和PHP客户端之间进行一些简单的TCP通信。但是,我没有运气来获得它们之间的联系。我基本上是通过PHP套接字通信通过Web浏览器发送桌面应用程序消息。但是,我一直收到超时错误。

我的代码如下:

我的C#服务器代码 - 它只是监听并通知我是否建立了连接

    static void Main(string[] args)
    {
        try
        {
            IPAddress localAddress = IPAddress.Parse("xx.xx.xx.xx");

            TcpListener listener = new TcpListener(localAddress, 4761);

            listener.Start(1);

            while (true)
            {
                Console.WriteLine("Server is waiting on socket {0}", listener.LocalEndpoint);

                TcpClient client = listener.AcceptTcpClient();

                NetworkStream IO = client.GetStream();

                Console.WriteLine("Recieved a connection from {0}", client.Client.RemoteEndPoint);

                Console.WriteLine("Time to depart.");
                client.Close();
            }
        }
        catch (Exception E)
        {
            Console.WriteLine("Caught exception: {0}", E.ToString());
        }
   }

PHP客户端 - 这是我做的一个只是连接到服务器的功能(失败了)

            public function Hook_Up($Host_IP)
    {
        $this->String_and_Cup = fsockopen("xx.xx.xx.xx", 4761);

        if($this->String_and_Cup)
        {
            echo "Congratulations, it's a socket connection...";
        }
        else
        {
            echo "I'm sorry, the socket connection didn't make it...";
        }
    }

我想要做的就是通过浏览器连接到这个服务器。我很欣赏有关如何操作的意见。

提前致谢。

1 个答案:

答案 0 :(得分:2)

我不认为你想要实现的目标应该这样做。您将无法通过http(这是浏览器使用的协议)连接到tcp端口。您创建的PHP套接字必须从命令行运行才能正常工作。

从可以告诉你的内容,你可能想看一下这是一个html5实现的web套接字,目前支持更新版本的chrome和firefox。 Web套接字使用Web套接字协议来实现基于推送的系统,您可以在其中使用服务器使用内存队列(如活动mq)来推送来自服务器的消息,而客户端是浏览器应该从这些消息中获取这些消息。服务器在队列中。

TCP套接字不适用于浏览器。如果您想从服务器连接到tcp套接字,只需使用此处给出的javascript即可http://ajaxian.com/archives/tcpsocket-sockets-in-the-browser

var conn = new TCPSocket(hostname, port)

conn.onopen = function() { alert('connection opened!') }
conn.onread = function(data) { alert('RECEIVE: ' + data) }
conn.onclose = function(data) { alert('connection closed!') }

conn.send('Hello World');