私はこのプログラムを持っており、同じコンピューターの別のソケットに 45 秒ごとに文字列を送信しています。以下は、C# の組み込み Socket クラスを使用して、ソケット経由で文字列を送信する関数です。
私が抱えている問題は、このプログラムを実行して 127.0.0.1 を指定すると、ソケットから応答が返されないことです。しかし、コンピューターのIPアドレスを使用して別のコンピューターでプログラムを実行すると、問題なく動作します。
そこで、Socket クラスの IP として 127.0.0.1 を渡すことが許可されているかどうかを質問し、同じコンピューター上の別のソケットにデータを送信したいことを認識させました。127.0.0.1 で動作することを確認するために何か別のことをする必要がありますか?
ありがとう!
static string QueryMiner(string command)
{
byte[] bytes = new byte[1024];
try
{
//code for gettting current machines IP Use this code if client is running on the miner
IPAddress ipAddr = IPAddress.Parse("127.0.0.1");
//IPAddress ipAddr = IPAddress.Parse("198.xxx.xxx.xxx");
IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 4028);
Socket sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sender.Connect(ipEndPoint);
Console.WriteLine("Socket connected to {0}", sender.RemoteEndPoint.ToString());
string SummaryMessage = command;
byte[] msg = Encoding.ASCII.GetBytes(SummaryMessage);
sender.Send(msg);
byte[] buffer = new byte[1024];
int lengthOfReturnedBuffer = sender.Receive(buffer);
char[] chars = new char[lengthOfReturnedBuffer];
Decoder d = System.Text.Encoding.UTF8.GetDecoder();
int charLen = d.GetChars(buffer, 0, lengthOfReturnedBuffer, chars, 0);
String SummaryJson = new String(chars);
sender.Shutdown(SocketShutdown.Both);
sender.Close();
return SummaryJson;
}
catch (Exception ex)
{
Console.WriteLine("Exception: {0}", ex.ToString());
return ex.ToString();
}
}