首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何听数据包与球拍?

我如何听数据包与球拍?
EN

Stack Overflow用户
提问于 2013-08-04 06:57:32
回答 3查看 565关注 0票数 1

我正在尝试使用Racket监听通过我的机器上的端口80的数据包。然而,我似乎遇到了一堵墙,要么是我对数据包嗅探器工作原理的理解,要么是我对球拍如何工作的理解,或者两者兼而有之。

下面是我的代码(大部分来自Racket的维基百科条目)。

代码语言:javascript
复制
#lang racket

(require racket/tcp)

(define listener (tcp-listen 80))

(define (echo-server)
  (define-values (in out) (tcp-accept listener))
  (thread (lambda () (copy-port in out) 
                     (print (read in)) 
                     (close-output-port out)))
  (echo-server))

(echo-server)

当我连接到localhost:80时,我得到了一些反馈--但是当我尝试使用我的浏览器时,我什么也无法打印。如何修改此代码,使其能够侦听来自web请求的数据包?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-04 22:34:56

然而,我似乎遇到了一堵墙,因为我对包嗅探器的工作原理有很深的了解。

是。数据包嗅探器不使用常规套接字;它使用任何可用的机制来被动地监视网络接口接收或发送的数据包。如果您只想查看端口80上的HTTP流量,而不响应该通信量或更改该通信量,则需要使用libpcap/WinPcap之类的方法,它在操作系统上使用适当的机制来被动地监视数据包。例如,参见球拍的SPeaCap库

但是,请注意,如果被动地嗅探流量,您将看到原始链路层数据包;要从它们中提取TCP内容,您必须解析链接层报头、IP报头和TCP报头,以找到内容。我将由你来决定如何去做。

票数 4
EN

Stack Overflow用户

发布于 2013-08-04 07:17:11

您的TCP服务器只是充当回显服务器,这意味着它不符合HTTP。您的浏览器正在期待一个有效的HTTP响应,因此它不能工作并不令人惊讶。

球拍有各种东西的图书馆。对文档的快速搜索发现如下:Web服务器: HTTP服务器

票数 0
EN

Stack Overflow用户

发布于 2019-11-21 00:13:07

packet-socket库(最近一次更新到2017年)允许访问原始以太网帧。pkgd上的包套接字

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18040504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档