私はいくつかの同様の単純なJavaサーバーとクライアントを作成しました。私がEclipseから実行したり、同じコンピュータから私が言うことができる限り、それらはうまく動作します。Javaソケットが接続を受けない
クライアントプログラムを他のコンピュータに送信すると、バインドできません。
また、私はiOS用のSwiftアプリを作って電話からサーバーにアクセスしようとしましたが、役に立たなかった。
これは私のサンプルコードです。これは裸の骨ですが、それでも動作しません。ファイアウォールに問題がありますか?私はMacBookPro 2010、OS Sierra 10.12 betaを実行しています。 Eclipseはファイアウォールで検証されます。
public class BasicServer {
public static void main(String[] args) {
ServerSocket sam = null;
Socket bob = null;
try {
sam = new ServerSocket(1025);
System.out.println("Server is Cheking acceptance");
bob = sam.accept();
if (bob != null) {
System.out.println("\nSystem Accepted");
}
System.out.println("\nClosing Server...");
} catch (Exception e) {
System.out.println("Error on server side of type: " + e.getMessage());
} finally {
try {
sam.close();
bob.close();
} catch (Exception e) {
System.out.println("Socket on Finally had encountered an Error:" + e.getLocalizedMessage());
}
}
}
}
これは、Eclipse
public class TransServer {
public static void main(String[] args) {
System.out.println("Action Done");
try {
Socket sam = new Socket("some IPv6", 1025);
System.out.println("Done...");
if (sam.isConnected()) {
System.out.print("Connected!");
}
sam.close();
} catch (IOException e) {
System.out.println("Error Occoured: " + e);
}
}
}
から動作し、これはSWIFTコードです:
class ViewController: UIViewController {
private let serverIP = "some IPv6"
@IBOutlet weak var textOutlet: UITextView!
@IBAction func connectAction(_ sender: UIButton) {
// textOutlet.title = ""
connectToServer()
}
private func connectToServer() {
let mySocket = TCPClient(address: serverIP, port: 1025)
let connectResult = mySocket.connect(timeout: 2)
switch connectResult {
case .failure(let e):
textOutlet.text = "We received an error: \(e.localizedDescription)"
case .success:
textOutlet.text = "We have successfuly established a Connection to server!"
}
mySocket.close()
textOutlet.text.append("\nWe have closed the Socket")
}
}
任意のアイデア?
ありがとうございます。
'serverIP'はどうやって見つかりますか?コンピュータ/デバイスは同じネットワーク上になければなりません。 MacOSでは、ネットワーク環境設定でIPを見つけることができます... –
私はGoogleに入力すると、 "my ip"のように表示されます...私は異なるデバイスと異なるIPの両方からサーバーにアクセスしたい...異なった州の私の友人がサーバーに要求を送ることができるはずです... –