对套接字和端口的困惑

时间:2012-02-11 17:46:12

标签: sockets port

我正在尝试编写一个程序来“监听”通过TCP / IP在端口上运行的应用程序。

当我将浏览器指向localhost:30003时,我将应用程序的输出流打印到屏幕上。浏览器似乎成功“监听”了端口。

这里发生了什么?我的浏览器是在轮询应用程序还是应用程序推送浏览器选择的tcp数据?

我不确定是否需要创建客户端或服务器实例来获取此数据。

3 个答案:

答案 0 :(得分:2)

找出实际发生情况的最佳方法之一是启动Wireshark并按照tcp流进行操作。

http://www.wireshark.org/

或者,如果您只关心文本,则可以使用类似TCP mon的内容,而不使用任何网络详细信息。

http://ws.apache.org/commons/tcpmon/download.cgi

根据您问题中的有限信息,最可能的事情是浏览器建立了tcp连接,并且您发回了格式错误的响应。浏览器假设您是一个破碎的网站,并且最好进行调整。如果您没有发送正确的http标头,它不知道还有什么可以这样做,可能只是将文本放在屏幕上。

了解详细信息的最佳方式是使用wireshark或tcpmon

答案 1 :(得分:0)

将浏览器指向localhost:30003将导致它打开与localhost上端口30003的连接,并发送字符串“GET /”以从Web主机认为是请求网页。无论您的应用程序在收到连接时发送了什么文本,都只需通过Web浏览器显示,就好像它已收到Web服务器上文本文件的内容一样。

答案 2 :(得分:0)

当您在浏览器中写入“localhost:30003”时,会建立与某些程序的连接,该程序会侦听您计算机上的端口30003。 URL中的前缀(默认HTTP)决定了服务器和客户端使用的协议,在这种情况下,浏览器是连接到PC,服务器的客户端。

如果要对程序执行相同操作,可以使用相同的端口30003设置与localhost的套接字连接。然后,您的程序将成为客户端。根据程序(您没有提及任何内容),您可能有更多协议选项,需要在程序中处理协议。

另一种方法是使用telnet连接到您的程序,但这取决于可用的协议。