У меня есть два приложения, одно из которых написано на Java, а другое - на C#. Я пытаюсь отправить строку из приложения Java в приложение C#.Сокет, связанный между приложениями java и C#
Мой Java-код для отправки строки выглядит следующим образом:
String response;
try {
DataOutputStream outToServer =
new DataOutputStream(outGoingSocket.getOutputStream());
BufferedReader inFromServer =
new BufferedReader(new InputStreamReader(outGoingSocket.getInputStream()));
outToServer.writeBytes(message + '\n');
outToServer.flush();
response = inFromServer.readLine();
System.out.println("Received: " + response);
} catch (Exception ex) {
System.err.println("Exception in incoming socket: " + ex.getMessage());
}
Мой C# код для получения данных выглядит следующим образом:
Byte[] bytes = new Byte[1000];
String data = null;
try {
Console.Write("Waiting for a connection... ");
TcpClient client = incomingSocket.AcceptTcpClient();
Console.WriteLine("Connected!");
data = null;
NetworkStream stream = client.GetStream();
int i;
while (true) {
while ((i = stream.Read(bytes, 0, bytes.Length)) != 0) {
data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
Console.WriteLine("Received:", data);
processReceivedMessage(data);
ackSocket(stream, "OK");
}
}
} catch (Exception ex) {
Console.WriteLine("Exception: ", ex);
}
У меня есть проблема с получением данных в C#. Когда я посылаю строку «Data» в приложении Java, и попытаться распечатать данные, полученные с помощью приложения C# с использованием Console.WriteLine("Received: {0}", data)
, выход:
Received: D
Received: ata
Если я использую Console.WriteLine("Received: ", data)
, выход:
Received:
Received:
Я хочу, чтобы мое приложение C# получало полную строку, отправленную приложением Java. Я попытался увеличить размер байтового массива буфера до 1000, но это не помогает. У меня нет опыта использования сокетов, может кто-нибудь показать мне, что я сделал неправильно?
Hi @spender, пожалуйста, оставьте свои комментарии как ответ, чтобы я мог его принять, большое спасибо за StreamReader – Xitrum
Да, я, кажется, трачу много времени на отправку ответов в комментариях ... Перемещали все в ответьте за вас. – spender