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

本文关键字:超时 通信 于超时 客户端 服务器端 PHP | 更新日期: 2023-09-27 18:15:15

我对套接字编程相当陌生,但这里没有什么。

我一直在尝试在c#服务器和PHP客户端之间做一些简单的TCP通信。然而,我一直没有找到他们之间的联系。我基本上是通过web浏览器通过PHP套接字通信发送一个桌面应用程序消息。然而,我一直得到一个超时错误。 我的代码如下:

我的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...";
        }
    }
到目前为止,我想要做的就是通过浏览器连接到这个服务器。如果你能告诉我怎么做,我将不胜感激。

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

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

从它可以告诉你的,你可能想看看web sockets,这是一个html5实现,目前支持的新版本的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');