2009-06-25 23 views
6

私が使用してBSDソケットのNagleアルゴリズムをオフにしようとしています:SolarisのBSDソケットでTCP_NODELAYを設定するには?

setsockopt(newSock, IPPROTO_TCP, TCP_NODELAY, (char*)&flag, sizeof flag); 

をしかし、コンパイラがTCP_NODELAYが前に見られていないと主張:これはために含まれての完全なリストである

error: `TCP_NODELAY' undeclared (first use this function) 

これは中のファイル:

#include <arpa/inet.h> 
#include <fcntl.h> 
#include <iostream> 
#include <netdb.h> 
#include <string> 
#include <sys/socket.h> 
#include <sys/types.h> 
using namespace std; 

私も-lnsl-lsocketリンカオプションがありますが、私ちょうどコンパイルされません。何か不足していますか?

このすべては、Solaris 8マシン上にあります。

答えて

12

が見える - TCP_...定義が住んでいるのです。

+0

正確に右、ありがとう! –

+0

私はこれをSolaris 10で試しました(すでに含まれているヘッダーの後ろに追加しなければなりませんでした)。私は含めてエラーを得た - しかし、私はCのプログラムを試してみましたので、私はにそれを変更しなければなりませんでした – poundifdef

2

私は、唯一のLinux一つの便利なSolarisのボックスを持っていません。中

grep -ri TCP_NODELAY /usr/include/* 

結果:

/usr/include/linux/tcp.h:#define TCP_NODELAY   1  /* Turn off Nagle's algorithm. */ 
/usr/include/netinet/tcp.h:#define  TCP_NODELAY  1  /* Don't delay send to coalesce packets */ 

はおそらく、あなたは似た何かを試みることができますか?あなたが#include <netinet/tcp.h>が欠けているよう

関連する問題