2011-11-18 39 views
0

我对套接字编程颇为陌生,但这里什么都不做。PHP客户端和C#服务器 - 由于超时而无法通信

我一直在尝试在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..."; 
     } 
    } 

所有我想要这么做是通过浏览器连接到这个服务器。我很感激关于如何这样做的意见。

在此先感谢。

回答

2

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

从什么可以告诉你,你可能想看看网络套接字这是一个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'); 
+0

哇,谢谢你的链接和建议!我真的很感激!我会继续在早上检查一下,并告诉你它是如何工作的。再次感谢你! – Exitium