Клиент PHP и сервер C # - нет связи из-за тайм-аута - PullRequest
0 голосов
/ 18 ноября 2011

Я довольно новичок в программировании сокетов, но здесь ничего не происходит.

Я пытался установить простую связь TCP между сервером C # и клиентом PHP.Однако мне не повезло в установлении связи между ними.Я в основном отправляю сообщения приложений для настольных компьютеров через веб-браузер через 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 Client - Я сделал эту функцию, которая просто подключается к серверу (с треском проваливается)

            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 Ответ

2 голосов
/ 18 ноября 2011

Я не думаю, что то, что вы пытаетесь достичь, должно быть сделано таким образом.Вы не сможете подключиться к TCP-порту через http, который является протоколом, используемым браузером.PHP-сокет, который вы создали, должен быть запущен из командной строки, чтобы он работал правильно.

Из того, что я могу вам сказать, вы могли бы взглянуть на веб-сокеты, которые представляют собой реализацию html5, которая в настоящее время поддерживается более новыми версиями Chrome и Firefox.В веб-сокетах используется протокол веб-сокетов для реализации систем на основе push, где вы можете иметь сервер, который использует очередь памяти, такую ​​как активный 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');
...