Я получил данные от сокета UDP fd
. Как я могу использовать эту информацию для установления TCP-соединения от отправителя. buf
содержит порт TCP.
struct sockaddr_storage remote_addr;
socklen_t remote_addr_len;
recvfrom(fd, buf, BUFSIZE, 0, (struct sockaddr *)&remote_addr, &remote_addr_len);
Код ниже - моя попытка, но она не работает. Я новичок в программировании сокетов, и я рву волосы, пытаясь понять это.
newfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
struct hostent *info;
info = gethostbyname(remoteAddr.h_addr);
struct sockaddr_in newConn;
newConn.sin_family = AF_INET;
bcopy((char *)info->h_addr, (char *)&newConn.sin_addr.s_addr, info->h_length);
newConn.sin_port = htons(mesgTcpPort); //mesgTcpPort is of type int gotten from buf
connect(newfd,(struct sockaddr *)&newConn,sizeof newConn);
Проверка ошибок опущена.