2015-03-02 18 views
0

我使用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

1分鐘谷歌搜索給了我:[鏈接](http://mail-archives.apache.org/mod_mbox/thrift-dev/201411.mbox/%[email protected]A%3E) – zoska 2015-03-02 13:24:12

+1

...和[THRIFT-2803](https://issues.apache.org/jira/browse/THRIFT-2803) – JensG 2015-03-02 13:34:04

+0

請參閱Edit1 – Irbis 2015-03-03 12:37:02

回答

0

您在TServerSocket的構造函數中提供的路徑字符串並不意味着用於指定服務器地址,而是用於創建Domain Sockets。因此該路徑是要使用的文件路徑。

相關問題