The requested address is not valid in its context

2019-01-28 03:19发布

问题:

I am trying to connect to a sensor using network, the sensor's ip is 192.168.2.44 on port 3000;

My Code:

byte[] byteReadStream = null; // holds the data in byte buffer
IPEndPoint ipe = new IPEndPoint(IPAddress.Parse("192.168.2.44"), 3000);//listen on all local addresses and 8888 port
TcpListener tcpl = new TcpListener(ipe);
while (true)
{
    //infinite loop
    tcpl.Start(); // block application until data and connection
    TcpClient tcpc = tcpl.AcceptTcpClient();
    byteReadStream = new byte[tcpc.Available]; //allocate space
    tcpc.GetStream().Read(byteReadStream, 0, tcpc.Available);
    Console.WriteLine(Encoding.Default.GetString(byteReadStream) + "\n");
}

But when i run this code i got this error:

The requested address is not valid in its context

回答1:

Use IPAddress.Any to listen. This seems to be your goal:

//listen on all local addresses

The listening address you have specified is invalid for some reason. There is no need to specify a numeric address.



回答2:

The TcpListener listens for connections from TCP network client, on a given port on your local machine. That is, for incoming connections. Your code will be acting as a "server" of sorts.

The requested address is not valid in its context simply means that the IP address given is not used by any network interface on your machine.

Use IPAddress.Any to listen on any IP address (i.e. network interface).

However, it might be the case that you need to connect to the sensor (on port 3000), not the other way around.

EDIT: The new exception just tells you that you have two applications trying to listen to the same interface/port combination. Do you have two instances running at the same time?