В моей первой программе я нахожу локальный IP-адрес (int iip), и мне хотелось бы отправить этот IP-адрес, а также порт (int port = 1100) в структуры (Ins c). Затем я хотел бы, чтобы вторая программа получила эту структуру и выберет ip-адрес и порт для использования в tcp-соединении позже.Ошибка структуры и int char * conversion
n_addr inaddr;
inaddr.s_addr = htonl(iip);
int udp_socket_info;
struct sockaddr_in udp_server;
udp_socket_info = socket(AF_INET, SOCK_DGRAM, 0);
if (udp_socket_info == -1) {
puts("Could not create udp socket");
}
puts("Udp socket created");
udp_server.sin_addr.s_addr = inet_addr("225.0.0.37");
udp_server.sin_port = htons(1100);
udp_server.sin_family = AF_INET;
int port = 1100;
Ins c(iip, port);
sendto(udp_socket_info, &c, sizeof(c), 0, (struct sockaddr *)&udp_server, sizeof(udp_server));
puts("STRUCT Message Sent");
В одной программе я получаю следующую структуру:
Ins c;
if (recvfrom(udp_socket_info, &c, sizeof(c), 0, &addr, &fromlen) < 0) {
perror("Recvfrom error:");
}
puts("STRUCT Message Received");
tcp_ip = c.address;
tcp_port = c.port;
В заголовочном файле MonReqServer.hh Заявляю TCP_IP и TCP_PORT, как символ *, потому что это то, что мне нужно использовать для настройки tcp socket.
private:
char* tcp_ip;
char* tcp_port;
И следующее заголовок для Ins.hh
namespace Pds {
class Ins
{
public:
Ins();
enum Option {DoNotInitialize};
explicit Ins(Option);
explicit Ins(unsigned short port);
explicit Ins(int address);
Ins(int address, unsigned short port);
Ins(const Ins& ins, unsigned short port);
explicit Ins(const sockaddr_in& sa);
int address() const;
void address(int address);
unsigned short portId() const;
int operator==(const Ins& that) const;
protected:
int _address;
unsigned _port;
};
}
Это мои ошибки:
MonReqServer.cc: In member function 'virtual void Pds::MonReqServer::routine()':
MonReqServer.cc:79: error: cannot resolve overloaded function 'address' based on conversion to type 'char*'
MonReqServer.cc:80: error: 'class Pds::Ins' has no member named 'port'
Мой вопрос то в том, как преобразовать мой адрес в полукокса * как только я получу его? В частности, какая команда переключается с int на char * и как я могу ее внедрить? Кроме того, почему он говорит, что у Ins нет имени имени порта? Я думал, что IP-адрес и порт - это то, что Ins должен предпринять? Пожалуйста, дайте мне знать, если мои вопросы неясны или вам нужна какая-либо другая информация? Спасибо!
Посмотрите станд :: stringstream – cppguy