.NETアプリケーションからJavaアプリケーションにデータを送信する必要があるユースケースがあり、これをソケットを使用して実行しようとしています。私は、サーバーのC#を使用して作成している - 私は以下のエラーを取得していますJavaソケットクライアントC#ソケットサーバーに接続できません
Socket socket;
try {
socket = new Socket("localhost", 13);
System.out.println("Connection established");
BufferedReader input =
new BufferedReader(new InputStreamReader(socket.getInputStream()));
String answer = input.readLine();
System.out.println(answer);
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
- -
TcpListener tcpListener = null;
IPAddress ipAddress = Dns.GetHostEntry("localhost").AddressList[0];
try
{
// Set the listener on the local IP address
// and specify the port.
tcpListener = new TcpListener(ipAddress, 13);
tcpListener.Start();
Console.WriteLine("The server is running at port 13...");
Console.WriteLine("The local End point is -" +
tcpListener.LocalEndpoint);
output = "Waiting for a connection...";
Console.WriteLine(output);
Socket s = tcpListener.AcceptSocket();
Console.WriteLine("Connection accepted from " + s.RemoteEndPoint);
}
catch (Exception e)
{
output = "Error: " + e.ToString();
Console.WriteLine(output);
}
}
Java側では、私は同じホストとポートをlistenソケットを作成しているjava.net.ConnectException:接続が拒否されました:接続。私はtelnet localhost 13を使って、自分のサーバが本当に稼働しているかどうかを確認しました。だから私は両方がローカルに実行されているので、それはサーバーが実行されていないかファイアウォールで問題になる可能性はないと思う。どのようにこれを解決するための任意のアイデア?
上位のポート番号(1000シリーズ)を使用してください。 – Sanjeev
ワイルドカードアドレス(0.0.0.0)にバインドすることもできます。おそらく、localhostにIPv6バインディングもあり、C#サーバーはそれを聞くだけかもしれません。 – Nico
IPアドレス127.0.0.1(ローカルホスト)を使用する場合、ネットライブラリのconnectメソッドは例外を出します。 connectメソッドを使用する場合は、PCのIPアドレスを使用する必要があります。リスナーはIPAddress.Anyを使用する必要があります。 Windowsオペレーティングシステムは、PC IPアドレスから仮想ソケットIPに自動的にメッセージを転送します。 – jdweng