相关疑难解决方法(0)

使用GNU/Linux系统调用`splice`在Haskell中进行零拷贝Socket到Socket数据传输

更新:Nemo先生的回答有助于解决问题!下面的代码包含修复程序!看到nb Falsenb True下面调用.

还有一个新的Haskell包被称为splice(具有特定于操作系统的便携式实现,这是一种最着名的socket到socket数据传输循环).

我有以下(Haskell)代码:

#ifdef LINUX_SPLICE
#include <fcntl.h>
{-# LANGUAGE CPP #-}
{-# LANGUAGE ForeignFunctionInterface #-}
#endif

module Network.Socket.Splice (
    Length
  , zeroCopy
  , splice
#ifdef LINUX_SPLICE
  , c_splice
#endif
  ) where

import Data.Word
import Foreign.Ptr

import Network.Socket
import Control.Monad
import Control.Exception
import System.Posix.Types
import System.Posix.IO

#ifdef LINUX_SPLICE
import Data.Int
import Data.Bits
import Unsafe.Coerce
import Foreign.C.Types
import Foreign.C.Error
import System.Posix.Internals
#else
import System.IO
import Foreign.Marshal.Alloc
#endif


zeroCopy :: Bool
zeroCopy =
#ifdef …
Run Code Online (Sandbox Code Playgroud)

sockets linux haskell network-programming splice

7
推荐指数
1
解决办法
2794
查看次数

标签 统计

haskell ×1

linux ×1

network-programming ×1

sockets ×1

splice ×1