我使用Ubuntu 14.04 LTS。這裏是一個工作的示例代碼:本地主機上的TServerSocket產生異常
boost::shared_ptr<TestHandler> handler(new TestHandler());
boost::shared_ptr<TProcessor> processor(new TestProcessor(handler));
boost::shared_ptr<TServerTransport> serverTransport(new TServerSocket(9090));
boost::shared_ptr<TTransportFactory> transportFactory(new TBufferedTransportFactory());
boost::shared_ptr<TProtocolFactory> protocolFactory(new TBinaryProtocolFactory());
thriftServerThread = std::thread(&TSimpleServer::serve, TSimpleServer(processor, serverTransport, transportFactory, protocolFactory));
我想僅在本地主機使用節儉服務器,所以我已經改變了:
boost::shared_ptr<TServerTransport> serverTransport(new TServerSocket(9090));
到
boost::shared_ptr<TServerTransport> serverTransport(new TServerSocket("localhost:9090"));
但後來我得到的例外:
Thrift: Mon Mar 2 13:28:03 2015 TServerSocket::listen() setsockopt() TCP_DEFER_ACCEPT Operation not supported terminate called after throwing an instance of 'apache::thrift::transport::TTransportException' what(): Could not set TCP_DEFER_ACCEPT: Operation not supported
有什麼不對?如何解決這個問題?
EDIT1 我已經更新節儉,現在我得到另一個錯誤:
Thrift: Tue Mar 3 13:31:40 2015 TServerSocket::listen() PATH 127.0.0.1:9090 terminate called after throwing an instance of 'apache::thrift::transport::TTransportException' what(): Could not bind: Address already in use
的Netstat沒有發現該端口。到底是怎麼回事 ?
1分鐘谷歌搜索給了我:[鏈接](http://mail-archives.apache.org/mod_mbox/thrift-dev/201411.mbox/%[email protected]A%3E) – zoska 2015-03-02 13:24:12
...和[THRIFT-2803](https://issues.apache.org/jira/browse/THRIFT-2803) – JensG 2015-03-02 13:34:04
請參閱Edit1 – Irbis 2015-03-03 12:37:02