Komunikacja pomiędzy serwerem C# a klientem java poprzez TCP/IP

0

Próbuję napisać dwie aplikacje - serwer w C# oraz klienta w java, które będą mogły się komunikować pomiędzy sobą. Niestety mogę tylko przesyłać dane z serwera do klienta - w przeciwnym wypadku całość się rozwala. Wiem już, że wina leży po stronie klienta(komunikacja serwer C# - klient C# działa bez zarzutu). Nie mam już żadnych pomysłów, także po prostu wrzucam kod poniżej:

Kod serwera w C#

try
                {
                    ServerAppListener = new TcpListener(AndroidAppAddress);
                    ServerAppListener.Start();

                    richTextBox1.Text += "Server started" + "\n";

                    isServerEnabled = true;

                    while (!ServerAppListener.Pending())
                    {
                        if (bgwServerListener.CancellationPending)
                        {
                            if (ServerAppClient != null)
                            {
                                ServerAppClient.Close();
                                ServerAppClient = null;
                            }

                            ServerAppListener.Stop();
                            ServerAppListener = null;

                            isServerEnabled = false;
                        }
                    }

                    isClientConnected = true;

                    ServerAppClient = ServerAppListener.AcceptTcpClient();
                    tcpStream = ServerAppClient.GetStream();
                    tcpReader = new BinaryReader(tcpStream);
                    tcpWriter = new BinaryWriter(tcpStream);

                    richTextBox1.Text += "Client '" + ServerAppClient.Client.RemoteEndPoint + "' connected\n";

                    tcpWriter.Write("hello client");
                    
                    richTextBox1.Text += "Client '" + ServerAppClient.Client.RemoteEndPoint + "' writed: '" + tcpReader.ReadString() + "'\n";

                    richTextBox1.Text += "Client '" + ServerAppClient.Client.RemoteEndPoint + "' disconnected\n";
                    
                    tcpReader = null;
                    tcpWriter = null;
                    tcpStream = null;
                    ServerAppClient.Close();
                    ServerAppClient = null;
                    ServerAppListener.Stop();
                    ServerAppListener = null;
                    isServerEnabled = false;
                    isClientAuthenticated = false;
                    isClientConnected = false;
                    bgwServerListener.CancelAsync();
                }
                catch (Exception ex)
                {
                    richTextBox1.Text += "\n********** Fail *********\n\n" + ex.ToString() + "\n\n*********** End of fail ************\n\n";
                }

Kod klienta Java

try
		{
			Socket con = new Socket(host, port);
			
			if(con.isConnected())
			{
				System.out.println("Connected");
				
				InputStream is = con.getInputStream();
				BufferedReader br = new BufferedReader(new InputStreamReader(is));
				
				PrintWriter out = new PrintWriter(con.getOutputStream (), true);
				
				String readtext = br.readLine();
				System.out.println(readtext);
				
				out.write("hello server");
				
				br.close();
				out.close();
				is.close();
				con.close();
				
				System.out.println("Disconnected");
			}
			else
				System.out.println("Disconnected");
		}
		catch(Exception ex)
		{
			System.out.println();
			System.out.println("********* Fail **********");
			System.out.println(ex.toString());
			System.out.println("****** End of fail ******");
		}

Ma ktoś może pomysł co może być nie tak?

0

Nie tak jest inny format stringa oczekiwany przez BinaryReader.ReadString() niż wysyłany przez PrintWriter.write().

BinaryReader i BinaryWriter służą do operacji na danych binarnych. Jeśli zamierzasz przesyłać teksty, to są od tego inne klasy.
Jeśli jednak chcesz zachować użycie BinaryReader.ReadString, to ze strony Javy musisz wysyłać stringa w odpowiednim formacie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1