首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scotty不会检测端口是否已在使用中?

scotty不会检测端口是否已在使用中?
EN

Stack Overflow用户
提问于 2018-05-12 05:26:08
回答 1查看 118关注 0票数 1

我正在运行这个例子。而且它是有效的。然而,如果我运行另一个实例,我预计它会崩溃并引发异常,但没有。预期的异常应该是类似于“端口3000已在使用中”,这是当你在不同的终端运行两个python -m SimpleHTTPServer 8000时类似的错误。

代码语言:javascript
复制
{-# LANGUAGE OverloadedStrings #-}
import Web.Scotty

import Data.Monoid (mconcat)

main = scotty 3000 $
    get "/:word" $ do
        beam <- param "word"
        html $ mconcat ["<h1>Scotty, ", beam, " me up!</h1>"]
EN

回答 1

Stack Overflow用户

发布于 2018-05-12 05:53:30

这是因为scotty使用的Data.Streaming.Network库(好吧,通过warp,由scotty使用)获取了一个跨越IPv4和IPv6的可能地址列表,然后尝试绑定到每个地址上的端口,一次一个,丢弃任何IO异常。

在端口3000上有两个scotty实例,我看到:

代码语言:javascript
复制
% netstat -an | grep 3000
tcp46      0      0  *.3000                 *.*                    LISTEN
tcp4       0      0  *.3000                 *.*                    LISTEN

尝试我看到的第三个scotty实例:

代码语言:javascript
复制
% ./x
Setting phasers to stun... (port 3000) (ctrl-c to quit)
x: Network.Socket.bind: resource busy (Address already in use)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50300481

复制
相关文章

相似问题

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