Я никогда не писал приложение, поэтому я выложу весь код (80 строк). (Я исхожу из предпосылки создания сценариев.)Выбор порта и приложение пакетного запуска
Моя цель - загрузить или создать список «используемых» портов, выбрать число в пределах диапазона, которого нет в списке, и если сумма попыток достичь неиспользуемого порта достигает 129, чтобы запустить пакетный файл Windows.
Это также превратит выбранный порт в CMD-
(некоторые это объединение источников от SO)
using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
using System.Diagnostics;
using System.IO;
namespace randomport
{
class Core
{
public const int
minval = 8001,
maxval = 8128;
public static int[] usedPorts = new int[]{};
public static int
chosenPort = 0,
tries = 0,
timeout = 10;
public static bool read = false;
public static void Main()
{
if(!read)
{
Read();
read = true;
}
RandGen();
}
public static void RandGen()
{
Process proc = null;
Random rand = new Random();
if(tries < 129) chosenPort = rand.Next(minval, maxval);
else
{
proc.StartInfo.FileName = @"C:\Users\Administrator\Desktop\TerrariaServer\filebin\sendservfull.bat";
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.Start();
proc.WaitForExit
(
(timeout <= 0)
? int.MaxValue : timeout * 100 * 60
);
}
for(int i = 0; i < usedPorts.Length; i++)
{
if(chosenPort != usedPorts[i])
{
Write();
// Application.Exit();
}
else
{
tries += 1;
return;
}
}
}
public static void Read()
{
using (StreamReader sr = new StreamReader(@"C:\Users\Administrator\Desktop\TerrariaServer\filebin\activeports.txt"))
{
string[] values = sr.ReadToEnd().Split(';');
for(int i = 0; i < values.Length; i++)
{
int.TryParse(values[i], out usedPorts[i]);
}
}
}
public static void Write()
{
File.AppendAllText(@"C:\Users\Administrator\Desktop\TerrariaServer\filebin\activeports.txt", "set port="+chosenPort+";");
File.Move(@"C:\Users\Administrator\Desktop\TerrariaServer\filebin\activeports.txt", Path.ChangeExtension(@"C:\Users\Administrator\Desktop\TerrariaServer\filebin\activeports.txt", ".cmd"));
}
}
}
У меня есть небольшая работа, чтобы сделать на конечный экспорт (как удаление ";").
Сценарий компилируется, но не работает по назначению. Что-то определенно неправильно, но я не знаю об этом. Если это что-то очевидное, я думаю, это было бы удобно, иначе, если это просто формат и т. Д., Мне явно нужно немного поучиться.
Каков ваш вопрос? Очевидно, что ваш код сработает, но в чем вопрос? –
Я предполагаю, что я должен сделать больше поиска Google при написании кода функционирования - мой вопрос очень смутен D: – DaFuze
Я бы настоятельно рекомендовал вам не использовать Google, чтобы научиться писать код. Пойдите, прочитайте книгу. Кроме того, FYI, это не сценарий - это программа. Есть большая разница, которую вы еще не узнали. Вам будет трудно написать приличную программу, используя тот же самый процесс мышления, который вы использовали бы для создания сценария. –