TCP服务器haskell字符串比较

2023-12-04

我有一个用 Haskell 编写的小型服务器,当我向它发送内容时,它应该评估发送的内容是否与 auth 函数中的密码“password”匹配,但它永远不是 True。 我可以看到发送的消息已通过,因为它打印在“putStrLn msg”处。 我尝试了几种方法,不同的功能,在 haskell 中使用“case of”,...。我不确定我做错了什么,它只是字符串比较不是吗?

提前致谢!

import Network
import Control.Concurrent
import System.IO
import Data.List
import Control.Monad

main :: IO ()
main = withSocketsDo $ do
    sock <- listenOn $ PortNumber 4242
    loop sock

loop :: Socket -> IO ()
loop sock = do
    (h,_,_) <- accept sock
    forkIO $ auth h
    loop sock

auth :: Handle -> IO ()
auth h = do
     msg <- hGetLine h
     putStrLn msg
     when (msg == "password") $ do
        server h

server :: Handle -> IO ()
server h = do
     hPutStr h "connected"
     putStrLn "connected"
     msg <- hGetLine h
     putStrLn msg
     hClose h 

我在这里看到了很多问题。

  • 你应该冲水Handle after hPutStr h "connected"。 IIRC 的Handle被缓冲。所以可能一切都好,但你看不到connected由于缓冲而在客户端发送消息。 (添加:使用hFlush h)

  • 一些客户(例如telnet) uses \r\n作为行尾标记,但是hGetLine期望\n。所以你可能会收到password\r代替password. Try print msg代替putStrLn msg查看您到底收到了什么。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TCP服务器haskell字符串比较 的相关文章

  • 没有由文字“1”产生的 Num String 实例

    main do putStrLn myLast 1 2 3 4 myLast a gt a myLast x x myLast xs myLast xs 当我尝试运行此代码时 我收到此消息 没有由文字 1 产生的 Num String 实例
  • 如何处理或避免BlockedIndefinitelyOnSTM异常?

    我花了很多时间来解决我正在处理的应用程序中遇到的问题 该应用程序是一个 Web 应用程序 使用 scotty 公开 REST 端点 它使用一个TVar保持其更新的状态STM a由前端层触发的动作 由于该应用程序基于事件溯源原则 因此业务层生
  • Haskell 中实例声明的参数顺序切换

    我想进行实例声明 但自由类型变量不是最后一个变量 例如 我有一个类声明 class Poppable m where tryPop m a gt Maybe a m a 现在我想让 Q PSQ 优先级队列 成为 Poppable 的实例 具
  • 是否有适用于 Haskell 或 Scala 等函数式语言的 LL 解析器生成器?

    我注意到明显缺乏用函数式语言创建解析器的 LL 解析器 我一直在寻找但没有成功的理想发现是为 ANTLR 风格的 LL 语法生成 Haskell 解析器 语法的模小数重新格式化 并且令我惊讶的是 每个最后一个解析器生成器都具有函数我发现的语
  • Haskell 中的所有图形和 Web 库是如何实现的?

    我才开始学习Haskell 我读到它是一种纯函数式语言 其中的所有内容都是不可变的 因此 输入输出 写入和读取数据库之类的事情会导致状态的可变性 我知道 Haskell 中有一种叫做 monad 的东西 它允许在 Haskell 中使用命令
  • 用纯函数式语言保持状态

    我正在尝试弄清楚如何执行以下操作 假设您正在开发直流电机的控制器 您希望让它以用户设置的特定速度旋转 def set point ref sp 90 while true let curr read speed controller set
  • `arr fst` 是如何自然变换的?

    I asked 这个问题 https stackoverflow com q 62733726 11143763不久以前 这是关于以下箭头定律 arr fst first f f arr fst Category k gt k b c gt
  • 如何计算函数被调用的次数,FP方式

    我目前正在通过SICP http mitpress mit edu sicp 与哈斯克尔 练习 1 15 询问一个函数被调用了多少次 这个想法可能是您应该使用替换方法 但我想知道如何在代码中执行此操作 在命令式语言中 我们可以保留一个全局变
  • 如何从有向无环图导出FRP?

    我目前正在研究我的下一个项目 目前处于预规划阶段 因此这个问题只是为了了解现有技术的概述 Setup 我有一个具有多个输入和输出的有向无环图 DAG 现在考虑人工神经网络 处理这种结构的常见方法是在每个 时间 步骤上处理整个网络 我相信这是
  • 为连续可测量的现象创建行为

    我想创建一个Behavior t a从一个IO a 其预期语义是每次行为发生时都会运行 IO 操作sampled language FlexibleContexts import Reflex Dom import Control Mona
  • 在 Haskell 中使用 Maybe 类型

    我正在尝试利用 Haskell 中的 Maybe 类型 我有一个查找返回 Maybe 的键 值元组 如何访问 Maybe 包装的数据 例如 我想将 Maybe 包含的整数与另一个整数相加 或者 您可以进行模式匹配 case maybeVal
  • 优化计算 200 万以下所有素数总和的 Haskell 代码

    欧拉计划中的问题 10 我在那里看到了一些讨论 但仅限于 C 我用下面的代码来计算 print sum sieve 2 2000000 where sieve sieve x xs x sieve filter 0 mod x xs 需要很
  • 关注点分离:什么时候最好将语义与语法分离?

    Choices 类型类的出色之处在于它们允许我们将额外的结构连接到现有类型 从而使我们能够推迟一些设计决策 而不是在构思时匆忙做出决定 另一方面 例如 在面向对象编程中 我们被迫考虑类型需要立即执行什么操作 以及稍后出现的或需要的任何附加结
  • Haskell 中的 Monad 和 Purity

    我的问题是 Haskell 中的 monad 是否真正保持了 Haskell 的纯度 如果是的话 又是如何保持的 我经常读到副作用是如何不纯粹的 但有用的程序 例如 I O 需要副作用 下一句指出 Haskell 对此的解决方案是 mona
  • Haskell 程序查找列表中元素的位置

    我需要编写一个函数来查找列表中一个特定元素的位置 我是这样写的 findPos list elt list 1 head list elt 0 otherwise 1 findPos tail list elt 但是如果列表中元素重复怎么办
  • Haskell 中的纯函数是否有可能改变变量的本地副本?

    Haskell 中的纯函数是否有可能改变变量的本地副本 就像 clojure 中提到的那样函数式编程是一个骗局 http swannodette github io 2013 06 10 porting notchs minecraft d
  • 为什么 Haskell 没有 I Monad(仅用于输入,与 IO monad 不同)?

    从概念上讲 执行输出的计算似乎与仅执行输入的计算有很大不同 从某种意义上说 后者更为纯粹 就我而言 我希望有一种方法将程序中仅输入的部分与可能实际写出内容的部分分开 那么 为什么没有输入只有 Monad 呢 为什么拥有一个 I monad
  • 使用 Haskell 识别段落中的单词数

    我是 Haskell 和函数式编程的新手 我有一个 txt包含一些段落的文件 我想使用 Haskell 计算每个段落中的单词数 我已经写了输入 输出代码 paragraph words String gt int no of words I
  • Haskell 类型族中的类型歧义

    我正在尝试整理以下课程Domain及其实例TrivialDomain LANGUAGE TypeFamilies data Transition Transition class Domain d where type Set d type
  • Haskell:打印文本编码

    Haskell 新手在这里 ghc version The Glorious Glasgow Haskell Compilation System version 6 12 1 在尝试调试第三方 Haskell 程序中与区域设置相关的奇怪错

随机推荐

  • 访问 firefox cookies.sqlite 错误

    当我尝试访问 Firefox 配置文件文件夹中的 cookies sqlite 时 出现以下错误 sqlite gt table Error database is locked 您认为错误是什么 编辑 当我关闭 Firefox 并阅读后
  • Laravel 的 utf8 编码问题

    部署我的 laravel 网站 在本地正常工作 后遇到问题 有些文本编码不正确 例如 Jo l 应该是 Jo l 一些信息 并非所有视图都会受到影响 某些变量在一个视图中正确呈现 但在另一个视图上被破坏 这让我认为这不是 mysql 问题
  • img src=webContentLink 中的 Google 云端硬盘图像?

    我可以使用存储在 Google Drive 中的图像通过 html 在网站中使用吗 img src Where
  • 每个新的 ClickOnce 部署版本都会丢失 VB.NET“My.Settings”

    我正在使用 VB NET 中内置的 My Settings 功能来保存应用程序设置 这很方便 但我注意到每次发布新版本时 设置都会丢失 为什么以及如何预防 您需要手动更新您的应用程序设置 我使用这个简单的方法 创建一个名为 MustUpgr
  • 使用 spring-boot:1.5.1 和 spring-cloud-stream 时无法启动 bean 'inputBindingLifecycle'

    使用 spring boot 1 5 1 时出现以下错误 但使用 spring boot 1 4 4 时未出现以下错误 有人遇到过这种情况吗 package org test import lombok Data import lombok
  • 在可可中使用结构列表有意义吗?

    这个问题由此衍生one 在 cocoa 中使用结构列表并不简单 要么使用NSArray并进行编码 解码 要么使用C类型数组并失去NSArray的商品 结构应该很简单 但是当需要列表时 人们倾向于构建一个类 什么时候在可可中使用结构列表才有意
  • Angular 4 路由器在 routerLink 导航上附加组件而不是销毁它们

    当从子模块内从子路由导航到另一个同级子路由时 路由器不会销毁前一个组件 而是在向前和向后导航时附加新组件 为什么会发生这种情况 开始于 subscriber lookup 搬到 subscriber register route a Sub
  • 如何在 R 中抓取 JSP 页面?

    我想在 R 中抓取以下页面的内容 http directoriosancionados funcionpublica gob mx SanFicTec jsp Ficha Tecnica SancionadosN htm 但是 我无法找到任
  • 如何开发和测试一个发送电子邮件的应用程序(无需用测试数据填充某人的邮箱)? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我有很多发送电子邮件的应用
  • 有没有类似 python 的交互式 REPL 模式,但适用于 Java?

    有没有类似 python 的交互式 REPL 模式 但适用于 Java 例如 这样我就可以输入InetAddress getAllByName localHostName 在一个窗口中 并立即得到结果 而不需要所有这些 public sta
  • 使用 php 客户端使用 Web 服务(Soap)

    我正在尝试为此编写一个客户端网络服务 它使用两层身份验证 一层位于请求标头中 一层用于服务器中的数据访问 这意味着我需要在标头中传递它 这就是我试图做的 class ChannelAdvisorAuth public DeveloperKe
  • 从Python中的单元素字典中提取键名

    如果我知道我的字典总是有一个元素 有没有办法在不通过列表的情况下提取键名称 我目前正在这样做 data foo 1 2 3 key name data keys 0 有没有更有效的技术 迭代字典产生键 Using next iter gt
  • 插件未加载

    这让我抓狂 我检查并重写了很多次代码 仍然不起作用 这里是 http codepen io cwf pen zGBmgm 虽然tablesorter js已加载 tablesorter is undefined 我读了这里所有的问题 但找不
  • lua中通过url下载文件

    Lua初学者在这里 我正在尝试通过 url 加载文件 但不知何故 我太愚蠢了 无法获取此处的所有代码示例来为我工作 如何在 Lua 中下载文件 但在运行时写入本地文件 从给定的url下载文件并将其存储到lua中的给定路径 socket re
  • 如何更改可选函数参数的默认值

    我需要更改全局变量S at a py from b py 但它被用作函数中的默认值a py a py S string def f s S print s print S b py import a def main a S another
  • Karate 支持是否在 html 报告中显示传入模拟服务器 API 请求的服务器端场景的断言或失败? [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 这可能是一个愚蠢的问题 或者可能已经得到回答 但我无法找到任何答案 我需要测试向特定端点或消费者发送 API 请求的微服务 我能够使用空手道成功编写模拟 并根据 服务器端 场景中发生的
  • Facebook 应用程序的 Facebook 集成配置错误

    我正在开发在社交网络上共享照片的 iPhone 应用程序 对于照片共享 我使用 Sharekit 我创建了 Facebook 应用程序并使用其 api 密钥和秘密 使用了正确的 api 密钥和秘密 当我尝试与此应用程序共享图像 甚至是简单的
  • Promise 被拒绝后抛出错误 - Q

    以下是使用 Q 的 Promise 的简短示例 这是 test1 js function testDefer var deferred Q defer fs readFile foo txt utf 8 function error tex
  • 如何重定向到servlet中的错误页面?

    我正在编写 servlet 如果出现异常 我将重定向到我的自定义错误页面 因为我已经这样做了 在 web xml 中
  • TCP服务器haskell字符串比较

    我有一个用 Haskell 编写的小型服务器 当我向它发送内容时 它应该评估发送的内容是否与 auth 函数中的密码 password 匹配 但它永远不是 True 我可以看到发送的消息已通过 因为它打印在 putStrLn msg 处 我