Я собираюсь настроить небольшой клиент / серверный сервер в режиме TCP / IP, я использую VS2010, C # для разработки своих приложений, я много гуглил и мог найти некоторые исходники, но ни один из них не работает в Интернет, я могу получить некоторые ответы в своей собственной локальной системе, то есть я запускаю свой сервер, затем прослушиваю свой собственный локальный хост (127.0.0.1), а затем отправляю некоторые данные (например, используя telnet), он работает нормально, но когда я делаю то же самое через интернет я ничего не получаю! Я хочу использовать порт 80, так как я хочу отправлять / получать данные http, я протестировал несколько исходных кодов, вот последний код, который я использовал (и он работает на localhost с telnet)
// код сервера:
form_load()
IPAddress localAddress = IPAddress.Parse("127.0.0.1");
Socket listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipEndpoint = new IPEndPoint(localAddress, 80);
// Bind the socket to the end point
listenSocket.Bind(ipEndpoint);
// Start listening, only allow 1 connection to queue at the same time
listenSocket.Listen(1);
listenSocket.BeginAccept(new AsyncCallback(ReceiveCallback), listenSocket);
Console.WriteLine("Server is waiting on socket {0}", listenSocket.LocalEndPoint);
// Start being important while the world rotates
while (true)
{
Console.WriteLine("Busy Waiting....");
Thread.Sleep(2000);
}
public static void ReceiveCallback(IAsyncResult AsyncCall)
{
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
Byte[] message = encoding.GetBytes("I am a little busy, come back later!");
Socket listener = (Socket)AsyncCall.AsyncState;
Socket client = listener.EndAccept(AsyncCall);
Console.WriteLine("Received Connection from {0}", client.RemoteEndPoint);
client.Send(message);
Console.WriteLine("Ending the connection");
client.Close();
listener.BeginAccept(new AsyncCallback(ReceiveCallback), listener);
}
отправить данные (клиент), конечно, я не использовал этот код, верно?
public static string SendData()
{
TcpClient client = new TcpClient();
client.Connect(IP, 80);
StreamWriter sw = new StreamWriter(client.GetStream());
StreamReader sr = new StreamReader(client.GetStream());
//if statement evalutes to see if the user has selected to update the server
//" " = update server
//"" = do not update the server
//if (updateData.Equals(""))
//{
// space = "";
//}
//else if (!updateData.Equals(""))
//{
// space = " ";
//}
//Refrences stream writer, username variable passed in from GUI
//space variable provides update function: "" = dont update. " " = update database.
sw.WriteLine("h");
sw.Flush();
//data send back from the server assigned to string variable
//string recieved = sr.ReadLine();
return "";
}
У меня будет серверный код на моем Сервере (winserver 2008R2), но в настоящее время я тестирую его на обычных ПК, что я делаю не так? Я хочу отправить какой-нибудь http-пакет из случайной системы (со случайным IP) на мой сервер (который я знаю по его IP), что мне делать? это возможно с TCP / IP или я должен сделать что-то еще?
это связано со статическим IP? у меня обязательно должен быть статический IP? мой веб-сервер имеет статический IP-адрес, а мои клиенты - нет, это проблема?
Я думаю, что у меня есть некоторые проблемы при определении портов и IP-адресов, как их настроить? мой сервер имеет определенный IP, но я не знаю IP моих клиентов, не могли бы вы объяснить мне его шаг за шагом?
спасибо