Как объявить IP-адрес, чтобы использовать его с несколькими функциями?

Я реализую простую клиент-серверную программу. Некоторые части я написал это:

  int main(void){
using namespace boost::asio;
using namespace std;
const std::string ip = "localhost";
const int port       = 10500;
ip::address addr = ip::address::from_string(ip);
ip::tcp::endpoint ep(addr, port);
ip::tcp::iostream s(ep);

s << "TERMINATE\n" << std::flush;} //This sends Terminate command to the server.
}
void function(void){
s << "TERMINATE\n" << std::flush;} // This part doesn't work.

}

Я новичок в ускорении ASIO и сетевого программирования. И работает на windows MingGW.

Как и в приведенном выше коде, я объявил IP-адрес в основной функции, но когда я пытаюсь использовать его в других функциях, объявленных вне основной, он не работает. Поставляется с ошибкой вроде:
‘s’ не было объявлено в этой области.
Если бы это была обычная переменная, я бы объявил ее вне основной и все остальные функции могли бы делиться. Но это не сработает для этого. Где и как нужно указывать ip-адрес и порт. Я предполагаю, что

using namespace boost::asio;
using namespace std;
const std::string ip = "localhost";
const int port = 10500;
ip::address addr = ip::address::from_string(ip);
ip::tcp::endpoint ep(addr, port);
ip::tcp::iostream s(ep);

выше часть делает декларацию.

-1

Решение

Вы можете просто сделать его глобальной переменной. Что-то вроде,

using namespace boost::asio;
using namespace std;

ip::tcp::iostream s;

int main(void){
const std::string ip = "localhost";
const int port       = 10500;
ip::address addr = ip::address::from_string(ip);
ip::tcp::endpoint ep(addr, port);
s = iostream(ep);

s << "TERMINATE\n" << std::flush;} //This sends Terminate command to the server.
}
void function(void){
s << "TERMINATE\n" << std::flush;}
}

Лучшим решением было бы передать его в качестве параметра вашей функции. Глобальные переменные, как правило, плохо использовать.

using namespace boost::asio;
using namespace std;

int main(void){
const std::string ip = "localhost";
const int port       = 10500;
ip::address addr = ip::address::from_string(ip);
ip::tcp::endpoint ep(addr, port);
ip::tcp::iostream s(ep);

function(s);
}
void function(ip::tcp::iostream &s){
s << "TERMINATE\n" << std::flush;}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]