我正在使用套接字,但是当我编译程序时,我遇到了一些错误。
这是我的代码:
address.sin_family = AF_INET;
address.sin_port = htons(string); // here I get an error
inet_aton(str.c_str(),&address.sin_addr);
我得到的是:
无法转换'__gnu_cxx :: __ alloc_traits>参数'1'到'uint16_t htons(uint16_t)'的> :: value_type {aka std :: __ cxx11 :: basic_string}'到'uint16_t {aka short unsigned int}'
如何解决此错误?
提前致谢。
答案 0 :(得分:1)
您需要将std::string
转换为std::uint16_t
。我推荐stringstream
std::istringstream ss(string); // maybe pick a different name
std::uint16_t port{};
ss >> port;
address.sin_port = htons(port);
请务必#include <sstream>
答案 1 :(得分:0)
htons需要一个uint16_t
这意味着您必须将端口作为整数传递,而不是作为字符串