Я пытаюсь создать программу, которая позволяет пользователям загружать JAR-файлы для некоторого стороннего кода, который они написали на онлайн-сервере, а затем получать в ответ сообщение String.
Онлайн-сервер кодируется с использованием Java со стандартной сетью TCP Socket. Клиент использует часть дополнительного программного обеспечения, что означает, что я должен использовать C # для загрузки файлов. Код, который я написал, включен ниже. В этой программе загрузчик файлов работает нормально, но по какой-то причине клиент зависает при достижении input.ReadLine (), где он должен получить ответ на сообщение String от сервера.
public static string sendFile(string filepath) {
String response = "";
// Get the file
Stream fileStream = File.OpenRead(filepath);
byte[] buffer = new byte[fileStream.Length];
fileStream.Read(buffer, 0, buffer.Length);
try {
// Create the connection
TCPClient client = new TCPClient("127.0.0.1", 21000);
NetworkStream stream = client.GetStream();
// Send the file to the server
stream.Write(buffer, 0, buffer.Length);
stream.Flush();
// Receive a single string response from the server
if (stream.CanRead) {
StreamReader input = new StreamReader(stream);
inputString = input.ReadLine();
}
input.Close();
stream.Close();
client.Close();
}
catch (IOException e) {
print ("Error: " + e);
}
// Return the response message string
return inputString;
}
Я также пытался реализовать приведенный выше код, используя StreamWriter, а не писать напрямую из самого NetworkStream. К сожалению, класс StreamWriter не имеет метода для отправки байтового массива (только массив символов). Мне интересно, вызвана ли проблема тем, что я вызываю метод Write для NetworkStream напрямую, а не с помощью StreamWriter.
Если кто-нибудь знает, почему код выше не работает, пожалуйста, дайте мне знать. В качестве альтернативы, если у вас есть другое решение, которое позволило бы мне отправить файл (байтовый массив) и получить обратно строковое сообщение, используя то же соединение TCPClient, тогда, пожалуйста, не стесняйтесь упомянуть его.
С уважением,
Midavi.