Multithreading 通过网络对事件进行排序(基于网络回合的游戏)
我对haskell networking(以及一般的点对点通信)相当陌生,希望能开发一款玩家对玩家的网络绞刑游戏,类似于流行的“与朋友绞刑”。在完成了一些教程(包括haskell.org的“实现聊天服务器”)之后,我成功地创建了一个服务器,并将套接字连接到套接字,将消息返回到第四个 我还有一个hangman客户端,当给定一个预定的输入时,它会按预期播放 但是,我遇到了在连接的客户端之间排序事件的问题。由于对套接字通道的读取和写入发生在不同的线程上(由于readChan和writeChan的阻塞性质),因此我不确定如何在远程终端之间对操作进行排序。我知道我想要什么,只是不知道如何到达那里:Multithreading 通过网络对事件进行排序(基于网络回合的游戏),multithreading,sockets,networking,haskell,semaphore,Multithreading,Sockets,Networking,Haskell,Semaphore,我对haskell networking(以及一般的点对点通信)相当陌生,希望能开发一款玩家对玩家的网络绞刑游戏,类似于流行的“与朋友绞刑”。在完成了一些教程(包括haskell.org的“实现聊天服务器”)之后,我成功地创建了一个服务器,并将套接字连接到套接字,将消息返回到第四个 我还有一个hangman客户端,当给定一个预定的输入时,它会按预期播放 但是,我遇到了在连接的客户端之间排序事件的问题。由于对套接字通道的读取和写入发生在不同的线程上(由于readChan和writeChan的阻塞性
git clone git@bitbucket.org:ndisidore/haskell-hangman.git
git checkout block-sem
或者
要运行:runhaskell NetInterface.hs
这将在端口3468上创建一个侦听套接字
要作为客户端/播放器连接,请打开一个单独的终端并运行“telnet localhost 3468”。这需要做两次,每个玩家一次
提前感谢。“它在第一个回合正确运行,但随后会退化为胡言乱语。”请您详细描述一下,好吗?理想情况下,每个游戏都是一个状态机,经历“等待玩家”、“等待单词”、“等待猜测”等状态。。。