[摘录]haskell实现办事器端,ruby实现客户端
添加时间:2013-8-8 点击量:
server.hs
import Network.Socket
main :: IO ()
main = do
-- create socket
sock <- socket AF_INET Stream 0
-- make socket immediately reusable - eases debugging.
setSocketOption sock ReuseAddr 1
-- listen on TCP port 4242
bindSocket sock (SockAddrInet 4242 iNADDR_ANY)
-- allow a maximum of 2 outstanding connections
listen sock 2
mainLoop sock
mainLoop :: Socket -> IO ()
mainLoop sock = do
-- accept one connection and handle it
conn <- accept sock
runConn conn
mainLoop sock
runConn :: (Socket, SockAddr) -> IO ()
runConn (sock, tcp) = do
sms<-recv sock 1024
putStr sms
send sock I recevied the message!\n
runConn (sock, tcp)
client.rb
require socket
s = TCPSocket.new localhost,4242
loop do
sms=gets.chomp
s.puts sms
puts s.gets
end
彼此相爱,却不要让爱成了束缚:不如让它成为涌动的大海,两岸乃是你们的灵魂。互斟满杯,却不要同饮一杯。相赠面包,却不要共食一个。一起歌舞欢喜,却依然各自独立,相互交心,却不是让对方收藏。因为唯有生命之手,方能收容你们的心。站在一起却不要过于靠近。—— 纪伯伦《先知》
server.hs
import Network.Socket
main :: IO ()
main = do
-- create socket
sock <- socket AF_INET Stream 0
-- make socket immediately reusable - eases debugging.
setSocketOption sock ReuseAddr 1
-- listen on TCP port 4242
bindSocket sock (SockAddrInet 4242 iNADDR_ANY)
-- allow a maximum of 2 outstanding connections
listen sock 2
mainLoop sock
mainLoop :: Socket -> IO ()
mainLoop sock = do
-- accept one connection and handle it
conn <- accept sock
runConn conn
mainLoop sock
runConn :: (Socket, SockAddr) -> IO ()
runConn (sock, tcp) = do
sms<-recv sock 1024
putStr sms
send sock I recevied the message!\n
runConn (sock, tcp)
client.rb
require socket
s = TCPSocket.new localhost,4242
loop do
sms=gets.chomp
s.puts sms
puts s.gets
end
彼此相爱,却不要让爱成了束缚:不如让它成为涌动的大海,两岸乃是你们的灵魂。互斟满杯,却不要同饮一杯。相赠面包,却不要共食一个。一起歌舞欢喜,却依然各自独立,相互交心,却不是让对方收藏。因为唯有生命之手,方能收容你们的心。站在一起却不要过于靠近。—— 纪伯伦《先知》