Windows 为什么nmap显示我的tcp服务器没有侦听它应该侦听的端口?
我打算建立在这段代码的基础上,发现 但是,我注意到我可以在本地主机上远程登录到该服务器。无法从另一台计算机中删除。我做了一个快速的nmap扫描,它报告在我选择的端口上没有任何内容正在侦听。 为了排除故障,我关闭了防火墙,因此排除了这一可能的问题 haskell windows程序员提供的线索将不胜感激 我通常和你一起去Windows 为什么nmap显示我的tcp服务器没有侦听它应该侦听的端口?,windows,sockets,haskell,Windows,Sockets,Haskell,我打算建立在这段代码的基础上,发现 但是,我注意到我可以在本地主机上远程登录到该服务器。无法从另一台计算机中删除。我做了一个快速的nmap扫描,它报告在我选择的端口上没有任何内容正在侦听。 为了排除故障,我关闭了防火墙,因此排除了这一可能的问题 haskell windows程序员提供的线索将不胜感激 我通常和你一起去 netstat-an | grep LISTEN 如果您看到列出的端口,则表示有人正在侦听。我一时记不起lsof命令是用于sockets的,谷歌并没有放弃商品。 netst
netstat-an | grep LISTEN
如果您看到列出的端口,则表示有人正在侦听。我一时记不起lsof命令是用于sockets的,谷歌并没有放弃商品。
netstat-an | grep LISTEN
如果您看到列出的端口,则表示有人正在侦听。我一时记不起lsof命令是用于sockets的,Google并没有放弃它。看来socket绑定到了localhost(127.0.0.1),这就是为什么你不能从其他机器连接它,而它只能从本地机器连接。尝试使用Bind API首先创建套接字,然后将套接字绑定到“任意地址”,该地址将套接字绑定到本地计算机上可用的每个接口。看来套接字绑定到了本地主机(127.0.0.1),这就是为什么您无法从其他计算机连接它,而它只能从本地计算机连接。尝试使用Bind API首先创建套接字,然后将套接字绑定到“任意地址”,该地址将套接字绑定到本地计算机上可用的每个接口。这是为将来的新Haskeller准备的。 我的代码基于。 我根据上述建议进行了改进。导入语句仍然很松散,但修复它们只是众所周知的“读者练习”。我邀请您提出任何其他改进建议
import Network.Socket
import Control.Monad
import Network
import System.Environment (getArgs)
import System.IO
import Control.Concurrent (forkIO)
main :: IO ()
main = withSocketsDo $ do
[portStr] <- getArgs
sock <- socket AF_INET Stream defaultProtocol
let port = fromIntegral (read portStr :: Int)
socketAddress = SockAddrInet port 0000
bindSocket sock socketAddress
listen sock 1
putStrLn $ "Listening on " ++ (show port)
sockHandler sock
sockHandler :: Socket -> IO ()
sockHandler sock' = forever $ do
(sock, _) <- Network.Socket.accept sock'
handle <- socketToHandle sock ReadWriteMode
hSetBuffering handle NoBuffering
forkIO $ commandProcessor handle
commandProcessor :: Handle -> IO ()
commandProcessor handle = forever $ do
line <- hGetLine handle
let (cmd:arg) = words line
case cmd of
"echo" -> echoCommand handle arg
"add" -> addCommand handle arg
_ -> do hPutStrLn handle "Unknown command"
echoCommand :: Handle -> [String] -> IO ()
echoCommand handle arg = do
hPutStrLn handle (unwords arg)
addCommand :: Handle -> [String] -> IO ()
addCommand handle [x,y] = do
hPutStrLn handle $ show $ read x + read y
addCommand handle _ = do
hPutStrLn handle "usage: add Int Int"
导入网络套接字
进口管制
导入网络
导入System.Environment(getArgs)
导入系统.IO
导入控制。并发(forkIO)
main::IO()
main=带库存的订单$do
[portStr]addCommand句柄参数
_->hPutStrLn是否处理“未知命令”
echoCommand::Handle->[String]->IO()
echoCommand句柄arg=do
hPutStrLn手柄(UNOWORDS参数)
addCommand::Handle->[String]->IO()
addCommand句柄[x,y]=do
hPutStrLn句柄$show$read x+read y
addCommand handle ux=do
hPutStrLn句柄“用法:添加Int”
这是为未来的新Haskeller设计的。
我的代码基于。
我根据上述建议进行了改进。导入语句仍然很松散,但修复它们只是众所周知的“读者练习”。我邀请您提出任何其他改进建议
import Network.Socket
import Control.Monad
import Network
import System.Environment (getArgs)
import System.IO
import Control.Concurrent (forkIO)
main :: IO ()
main = withSocketsDo $ do
[portStr] <- getArgs
sock <- socket AF_INET Stream defaultProtocol
let port = fromIntegral (read portStr :: Int)
socketAddress = SockAddrInet port 0000
bindSocket sock socketAddress
listen sock 1
putStrLn $ "Listening on " ++ (show port)
sockHandler sock
sockHandler :: Socket -> IO ()
sockHandler sock' = forever $ do
(sock, _) <- Network.Socket.accept sock'
handle <- socketToHandle sock ReadWriteMode
hSetBuffering handle NoBuffering
forkIO $ commandProcessor handle
commandProcessor :: Handle -> IO ()
commandProcessor handle = forever $ do
line <- hGetLine handle
let (cmd:arg) = words line
case cmd of
"echo" -> echoCommand handle arg
"add" -> addCommand handle arg
_ -> do hPutStrLn handle "Unknown command"
echoCommand :: Handle -> [String] -> IO ()
echoCommand handle arg = do
hPutStrLn handle (unwords arg)
addCommand :: Handle -> [String] -> IO ()
addCommand handle [x,y] = do
hPutStrLn handle $ show $ read x + read y
addCommand handle _ = do
hPutStrLn handle "usage: add Int Int"
导入网络套接字
进口管制
导入网络
导入System.Environment(getArgs)
导入系统.IO
导入控制。并发(forkIO)
main::IO()
main=带库存的订单$do
[portStr]addCommand句柄参数
_->hPutStrLn是否处理“未知命令”
echoCommand::Handle->[String]->IO()
echoCommand句柄arg=do
hPutStrLn手柄(UNOWORDS参数)
addCommand::Handle->[String]->IO()
addCommand句柄[x,y]=do
hPutStrLn句柄$show$read x+read y
addCommand handle ux=do
hPutStrLn句柄“用法:添加Int”
您使用了什么nmap
标志?更简单地使用netstat-a-ptcp
您使用了什么nmap
标志?更简单地使用netstat-a-ptcp这是最有意义的。今天晚些时候我会试试这个。我正在根据一篇关于tcp服务器示例的reddit文章改进代码。当它准备好接受批评时,我会发布我所做的。这是最有意义的。今天晚些时候我会试试这个。我正在根据一篇关于tcp服务器示例的reddit文章改进代码。当它准备好接受批评时,我会发布我所做的。