Witam. Robię mały program w Javie, który działa następująco: mam odpalony symulator, który generuje mi wynik pomiaru. Odpalam go, podając IP komputera oraz port 10000. Program po otrzymaniu stringa 1 wysyła wartość napięcia zaś 2 prądu. W C# program działa, natomiast w Javie zawsze zwraca mi zero. Nie wiem gdzie jest błąd. W załączeniu jest archiwum z symulatorem (Nie ja go pisałem). Poniżej kody:
Program w C# (DZIAŁAJĄCY):
using System;
using System.IO;
using System.Net.Sockets;
namespace ConsoleMetexEthCLient
{
class Program
{
static void Main(string[] args)
{
try
{
TcpClient client = new TcpClient();
client.Connect(IPAddress.Parse("192.168.1.113"), 10000);
//Adres serwera do ustawienia
NetworkStream stream = client.GetStream(); //pobranie strumienia
BinaryWriter SWrite = new BinaryWriter(stream);//strumien zapisu
BinaryReader Sread = new BinaryReader(stream); //strumien odczytu
Console.WriteLine("Napisz polecenie. '0' Konczy polaczenie, 1 i 2
pyta o wynik pomiaru");
while (true)
{
Console.Write("Podaj komendę>");
String message = Console.ReadLine(); //czyta klawiature
SWrite.Write(Convert.ToByte(message));
//zamienia na int i wysyla
if ((message == "0")) break; //koniec programu
int response = Sread.ReadInt16();
//odczyt odpowiedzi w postaci int
Console.WriteLine("Odb: {0}", response); //wypisanie na ekran
}
stream.Close();// Zamyka strumienie
client.Close();
}
catch (SocketException e)
{//obsluga wyjatku
Console.WriteLine("SocketException: {0}", e);
}
}
}
}
Program w Javie (DZIAŁA NIEPOPRAWNIE):
package com.company;
import java.net.*;
import java.io.*;
import java.util.concurrent.TimeUnit;
public class Main {
public static void main(String[] args) {
// write your code here
Socket my_socket = null;
try{
my_socket = new Socket("192.168.0.27", 10000);
// get the output stream from the socket.
OutputStream outputStream = my_socket.getOutputStream();
// create a data output stream from the output stream so we can send data through it
DataOutputStream dataOutputStream = new DataOutputStream(outputStream);
InputStream in = my_socket.getInputStream();
int data = -1;
while(true){
dataOutputStream.write("1".getBytes());//wyślij jedynkę "1"
dataOutputStream.flush(); // send the message
data = in.read();
System.out.println("The voltage value is " + data + " V ");
TimeUnit.SECONDS.sleep(1);
}
//dataOutputStream.close(); // close the output stream when we're done.
//in.close();
//my_socket.close();
}
catch(UnknownHostException my_unknown_exception){
System.out.println(my_unknown_exception);
}
catch(IOException my_input_exception){
System.out.println(my_input_exception);
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
}