現代編程變得越來越令人沮喪。嘗試在 Flutter 上做一個簡單的套接字測驗應用程式(在 Android 上測驗)。代碼簡單明了:
void Connect()
{
print("connecting...");
Socket.connect("localhost", 80).then((Socket sock) {
socket = sock;
socket?.listen(dataHandler,
one rror: errorHandler,
onDone: doneHandler,
cancelOnError: false);
socket?.write("GET / HTTP/1.1");
}).catchError((Object e) {
print("Unable to connect: $e");
});
}
代碼拋出例外。輸出:
I/flutter (15930): connecting...
I/flutter (15930): Unable to connect: SocketException: OS Error: Connection refused, errno = 111, address = localhost, port = 47244
埠總是不同的,為什么會發生這種情況?
uj5u.com熱心網友回復:
錯誤訊息中的埠號是本地埠,而不是遠程埠。這里有一個關于這個問題的問題:https ://github.com/dart-lang/sdk/issues/12693
簡而言之,使用 TCP 連接時,需要兩個埠。一個在您的設備上打開的本地埠和一個在您嘗試呼叫的系統上打開的埠的遠程埠。建立連接后,這兩個埠號之間進行通信。
因此,該錯誤表明您運行的服務器localhost:80拒絕來自您的應用程式的連接。錯誤訊息中的本地埠號通常可以忽略,因為它與除錯大多數問題并不真正相關。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/410657.html
標籤:
上一篇:遍歷專案串列,每個步驟都等待用戶輸入,然后再轉到串列中的下一個專案
下一篇:移動時精靈中的線條閃爍
