Гуглил, гуглил - ничего не нашел - Не гоните меня - я только начинаю изучать С++ Собственно вот - Нужно подключиться к серверу => server : port После чего послать команды: cmd_1 cmd_2 cmd_3 Помогите пожалуйста реализовать
обычно в учебниках ЯП "для профессионалов" всегда идет отдельной темой сетевое, постарайся изучить, потом учись коректно пользоваться поиском, а так же не бойся изучать чужой код вот на мсдне в примере, как раз то, что тебе нужно: http://msdn.microsoft.com/ru-ru/library/system.net.sockets.socket.aspx#Y0
Отпрвляешь пакетами, каждый из которы будет состоять из : 1. Команда(1 байт) 2. Размер (2 или 4 байта) 3. Данные того размера которые указал выше. Принимаешь так же, сначала один байт команды, потом два или четыре байта размер, а потом именно сколько байт данных. Потом ожидаешь следующий пакет.
2 inCode, в теме ясно сказано С++ 2 kravch_v, совершенно не с того начинаешь. Сетевое программирование сложная штука и без знания языка и устройства сети в целом - бесполезное занятие. Все давно разжовано - данная ссылка не раз публиковалась мной на форуме, пользуйся поиском и головой.
Человек просит C++, давайте дадим ему простой пример на чистом C++. Вот программка, которая отправит Яндексу простой гет-запрос и считает первые 100 байтов ответа, асинхронно (необходим boost): PHP: #include <string> #include <iostream> #include <boost/asio.hpp> #include <boost/bind.hpp> #include <boost/function.hpp> class sender { public: template<typename handler> sender(boost::asio::io_service& ios, const boost::asio::ip::tcp::endpoint& ep, handler callback) :ios_(ios), socket_(ios) { memset(str, 0, sizeof(str)); ios.post(boost::bind(&sender::worker, this, ep)); callback_ = callback; } private: void worker(const boost::asio::ip::tcp::endpoint& ep) { //коннектимся socket_.async_connect(ep, boost::bind(&sender::handle_connect, this, boost::asio::placeholders::error)); } void handle_connect(const boost::system::error_code& err) { if(err) { callback_(err, "", 0); return; } //этот запрос будем слать std::string to_write = "GET / HTTP/1.0\r\nHost: ya.ru\r\n\r\n"; boost::asio::async_write(socket_, boost::asio::buffer(to_write, to_write.length()), boost::bind(&sender::handle_write, this, boost::asio::placeholders::error)); } void handle_write(const boost::system::error_code& err) { if(err) { callback_(err, "", 0); return; } //читаем только первые 100 байт ответа boost::asio::async_read(socket_, boost::asio::buffer(str, 100), boost::bind(&sender::handle_read, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred)); } void handle_read(const boost::system::error_code& err, size_t transferred) { //финальный коллбэк if(err) { callback_(err, "", transferred); return; } else callback_(err, str, transferred); } boost::asio::io_service& ios_; boost::asio::ip::tcp::socket socket_; boost::function<void(const boost::system::error_code& err, const std::string& answer, size_t transferred)> callback_; char str[101]; }; //дернем эту функцию по завершении работы //она выведет ошибку (если какая-то возникла) //и количество принятых байтов void callback(const boost::system::error_code& err, const std::string& answer, size_t transferred) { std::cout << "Bytes transferred: " << transferred << std::endl; if(err) std::cout << "Error: " << err.message() << std::endl; else std::cout << "Answer: " << answer << std::endl << std::endl; } int main() { boost::asio::io_service ios; //IP и порт ya.ru boost::asio::ip::tcp::endpoint ep(boost::asio::ip::address::from_string("213.180.204.3"), 80); sender ch(ios, ep, callback); ios.run(); return 0; } Естественно, тут куча упрощений и нет проверки исключений в некоторых необходимых местах, но для начала сойдет. Если надо слать 3 команды - добавляем друг за другом больше коллбеков на запись-чтение, и все зависит от реализации сервера и типов команд.