ip4::address addr; addr.hostname("localhost"); addr.port(3234);
ip4::tcp_protocol protocol;
data_socket socket(connect(protocol,addr));
socket.setsockopt(boost::socket::socket_option_linger(1000));
boost::socket::basic_socket_stream<char> s(socket); for (int k=0;k<10;++k) { s << "hello\n"; s << "hello "; s.flush(); }
socket.close();
Did I miss the summary of what this example does? [I think it sends the text "hello\n hello " to port 3234 of the same computer 10 times, but it is always good to double-check I have read an example as intended] -- Correct :-)
Is there a reason socket_base::initialise/finalise are not wrapped in a RAII object? -- it is now!
Don't you think that everyone (as they do now) is going to write a wrapper for this library that acts like the following? --DJS camio@yahoo.com
int main() { try { TCPConnection con( "localhost",3234 ); con << "Hello how are you?" << std::endl; std::string response; std::getline( con, response ); cout << response << endl; } //con closes on disconnect catch ( ... ) { cout << "There was some kind of error" << std::endl; } }
Sorry don't understand what you are asking - Hugo
I was merely pointing out that the simplicity of the code I wrote outweights the flexibility of the code you wrote in 99% of useage. --DJS
Here comes a similar remark: Why not give a COMPLETE and simple example? This will help me and other interested in a boost socket library to get a kickstart. I mean something like:
#include "whichfiles?"
int main() { boost::socket::ip4::address addr("localhost",3234); ... ... boost::socket::basic_socket_stream<char> sout(socket); sout << "Hello World!" << endl; std::string reply; sin >> reply; std::cout << reply; }
=== The following compiles with the current version in the sandbox
#include "boost/socket/ip4.hpp" #include "boost/socket/socketstream.hpp" #include "boost/socket/socket_exception.hpp" #include "boost/socket/connector_socket.hpp"
using namespace boost::socket;
void main() { try { ip4::address addr("127.0.0.1", 3234);
typedef connector<> connector_t; typedef connector_t::data_connection_t data_connection_t;
connector_t connector; data_connection_t socket; connector.connect(socket, ip4::tcp_protocol(), addr); boost::socket::basic_socket_stream<char> s(socket); s << "Hello!" << std::endl; std::string response; std::getline(s, response); std::cout << response; socket.close(); } catch (const socket_exception& s) { std::cerr << s.message() << std::endl; } }
But not the version on sourceforge/giallo. The file socketstream.hpp doesn't exist, nor is basic_socket_stream declared or referenced anywhere in the files. What happened? - Dan (dan@eloff.info)
I also have problems with compiling this example - I'm using boost-sandbox/boost::sockets (27.II.2005), Janek
[buy lipitor online] [buy lipitor] [[buy lipitor online]]
[buy fioricet online] [buy fioricet] [[buy fioricet online]]