我有这个程序,它每隔45秒就会将一个字符串发送到同一台计算机上的另一个套接字。下面是使用C#的内置Socket类在套接字上发送字符串的函数。
我遇到的问题是,当我运行此程序并给出127.0.0.1时,我没有收到任何来自套接字的响应。但是当我使用计算机的ipaddress在不同的计算机上运行程序时,它可以完美地运行。
所以我质疑是否允许传入127.0.0.1作为Socket类的ip并让它识别我想将数据发送到同一台计算机上的不同套接字。我是否必须做任何不同的事情以确保它适用于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();
}
}
答案 0 :(得分:0)
您设置此服务器部分的代码(例如,调用绑定)不在此处,但您的问题几乎是证明您绑定到特定的IP地址而不是IPAddress.Any
。
如果是这样,使用本地IP而不是环回应该可以工作。