我对套接字编程很新,但这里什么也没做。
我一直在尝试在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...";
}
}
我想要做的就是通过浏览器连接到这个服务器。我很欣赏有关如何操作的意见。
提前致谢。
答案 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');