我正在为 Boost.Asio 的两个错误而苦苦挣扎。
第一次发生在我尝试在套接字上接收数据时:
char reply[1024];
boost::system::error_code error;
size_t reply_length = s.receive(boost::asio::buffer(reply, 1024), 0, error);
if (error) cout << error.message() << endl; //outputs "End of file"
第二个发生在我尝试从(有效!)本机套接字创建 ip::tcp::socket 时:
boost::asio::io_service ioserv;
boost::asio::ip::tcp::socket s(ioserv);
boost::system::error_code error;
s.assign(boost::asio::ip::tcp::v4(), nativeSocket, error);
if (error) cout << error.message() << endl; //outputs "The parameter is incorrect"
有了所有这些麻烦,没有文档可以求助,我很想回到 BSD 套接字,但我在那里遇到了自己的问题......所以如果有人能提供帮助,我将非常感激。
编辑:关于数字 2,nativeSocket 是这样声明的:
SOCKET nativeSocket = INVALID_SOCKET;
nativeSocket = accept(svr_sock, (struct sockaddr*)&sin, &size);
之后,对套接字进行了一些其他操作——即,使用 ioctlsocket 将其设置为非阻塞,并对 SO_LINGER 和 SO_OOBINLINE 使用 setsockopt。