Что я должен сделать, это простая передача данных (строки или байтов) с одного компьютера на другой. Я использую сокеты в качестве связей между удаленными компьютерами. Я нахожусь в начале моего проекта, но проблема в том, что я не могу установить успешную связь между компьютерами. Я не понимаю, какой IP-адрес должен быть в IPEndpoint, мой компьютер IPv4? Мой маршрутизатор IP? Я думаю, что проблема n моего кода. Цель этого иметь 1 клиента и 1 сервер, после этого я буду развивать это гораздо более крупное приложение, но сейчас мой код:Передача данных между удаленными компьютерами
Сервер:
class Server
{
static byte[] buffer;
static string data;
public static void StartListening()
{
while (true)
{
byte[] bytes = new Byte[100000];
IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
IPAddress ipAddress = ipHostInfo.AddressList[2];
IPEndPoint localEndPoint = new IPEndPoint(ipAddress,16000);
Socket listener = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
try
{
listener.Bind(localEndPoint);
listener.Listen(100);
while (true)
{
Socket handler = listener.Accept();
data = null;
while (true)
{
bytes = new byte[1000];
int bytesRec = handler.Receive(bytes);
data += Encoding.ASCII.GetString(bytes, 0, bytesRec);
if (data != null)
{
Console.WriteLine(data);
break;
}
}
handler.Shutdown(SocketShutdown.Both);
handler.Close();
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
}
}
Клиент: Я попробовал все три IP-адрес что IPHostEntry содержит, они тоже не работали, я пытаюсь запустить клиентскую программу с моего ноутбука. Код:
public static void SendData(string send)
{
try
{
IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint remoteEP = new IPEndPoint(IPAddress.Parse("MyIPAddressThat in hostinfo Addresses[2]"), 16000);
Socket sender = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
try
{
sender.Connect(remoteEP);
byte[] msg = Encoding.ASCII.GetBytes(send);
sender.Send(msg);
sender.Shutdown(SocketShutdown.Both);
sender.Close();
}
#region Catch
catch (ArgumentNullException ane)
{
Console.WriteLine("ArgumentNullException : {0}", ane.ToString());
}
catch (SocketException se)
{
Console.WriteLine("SocketException : {0}", se.ToString());
}
catch (Exception e)
{
Console.WriteLine("Unexpected exception : {0}", e.ToString());
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
#endregion
}
Вещь я хочу вам сосредоточиться в том, какой IP-адрес необходим компьютер или модем, и, возможно, почему моя программа не работала. спасибо за помощь.
+1 потому, что дает отрицательный голос без комментариев не приятно ... – Kristof