2012-02-11 61 views
1

我正在尝试编写一个程序,该程序将“侦听”通过TCP/IP在端口上运行的应用程序。套接字和端口混淆

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

发生了什么事吗?我的浏览器是在轮询应用程序还是应用程序推送浏览器提取的tcp数据?

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

+0

这是您需要的客户端实例(在端口30003上连接)。 – 2012-02-11 17:48:25

+0

删除了[[java]'标签,它并不真正相关。 – skaffman 2012-02-11 17:51:24

回答

2

找出实际情况的最好方法之一是启动Wireshark并遵循tcp流。

http://www.wireshark.org/

或者,你可以使用类似TCP问,如果你只关心文本,并没有组网的详细信息。

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

基于对你的问题的信息有限,最有可能的是,浏览器发出的TCP连接,您发回一个格式错误的响应。浏览器假设你是一个破碎的网站,最好进行调整。如果你没有发送正确的http头,它不知道还有什么要做,所以可能只是把文本放在屏幕上。

知道的细节

最好的办法是使用Wireshark或者TCPMON

0

将浏览器指向到localhost:30003将导致它的开放对本地主机连接到端口30003和发送字符串“GET /”请求从什么是认为是一个Web主机的网页。无论您的应用程序在接收到连接时发送的文本是由Web浏览器简单显示,就好像它已经接收到Web服务器上的文本文件的内容一样。

0

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

如果您想对程序执行相同的操作,可以使用相同的端口30003与本地主机建立套接字连接。然后,您的程序将成为客户端。根据程序(你没有提到任何关于),你可能有更多的协议选项,并需要在你的程序中处理协议。

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