C#将发送字符串发送到同一台计算机上的另一个套接字

本文关键字:计算机 一台 另一个 套接字 字符串 | 更新日期: 2023-09-27 18:27:20

我有这个程序,它每45秒向同一台计算机上的不同套接字发送一个字符串。下面是使用C#的内置socket类通过套接字发送字符串的函数。

我遇到的问题是,当我运行这个程序并给出127.0.0.1时,我没有从套接字得到任何响应。但当我用电脑的ipad在另一台电脑上运行这个程序时,它就会完美地工作。

因此,我质疑是否允许将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();
    }
}

C#将发送字符串发送到同一台计算机上的另一个套接字

设置服务器部分(例如调用绑定)的代码不在这里,但您的问题几乎可以肯定,您绑定到了特定的ip地址,而不是IPAddress.Any

如果是这样的话,使用您的本地IP而不是环回应该可以工作。