Я пытаюсь создать программу, которая позволяет пользователям загружать файлы 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, пожалуйста, также не стесняйтесь упоминать об этом.
С уважением,
Мидави.