У меня есть небольшая программа, которую я создал. Вот соответствующий фрагмент:
void TcpSocket::ConnectSocket()
{
socket = new QTcpSocket(this);
socket->connectToHost("localhost", 77);
if(socket->waitForConnected(3000)){
qDebug() << "Connected";
socket->write("Hello Server\n\r\n");
socket->waitForBytesWritten(1000);
socket->waitForReadyRead(3000);
qDebug() << "Reading: " << socket->bytesAvailable();
qDebug() << socket->readAll();
socket->close();
}
else {
qDebug() << "Could not connect";
}
}
В принципе, я хочу открыть tcp-сокет на localhost: 77. Я хочу написать некоторые данные, получить ответ, а затем вывести ответ. Однако сейчас, когда порт закрыт, по умолчанию большинство портов находятся в ubuntu. Поэтому прямо сейчас он не может подключиться к этому порту для прослушивания. Ну, из того, что я исследовал, iptables, кажется, единственный способ открыть порт для прослушивания. Поэтому я запускаю эту строку на своей машине:
sudo iptables -A INPUT -p tcp --dport 77 -j ACCEPT
Однако порт 77 все еще не открыт.
sudo netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 1199/dnsmasq
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1004/cupsd
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 1157/postgres
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1121/mysqld
tcp6 0 0 ::1:631 :::* LISTEN 1004/cupsd
udp 0 0 127.0.0.1:53 0.0.0.0:* 1199/dnsmasq
udp 0 0 0.0.0.0:68 0.0.0.0:* 1070/dhclient
udp 0 0 0.0.0.0:39617 0.0.0.0:* 990/avahi-daemon: r
udp 0 0 0.0.0.0:5353 0.0.0.0:* 990/avahi-daemon: r
udp6 0 0 :::57021 :::* 990/avahi-daemon: r
udp6 0 0 :::5353 :::* 990/avahi-daemon: r
netstat не показывает, что он открыт. Также у меня есть такая же проблема с моей программой: она не может подключиться к 77.
Если вы используете authbind для запуска tomcats, нам не нужны iptables или какие-либо программы для перенаправления, надеюсь, что эта ссылка будет полной.
https://askubuntu.com/a/685306/377678 [ ! d1]