Jump to content



Photo

found my java problem need help solving!


  • Please log in to reply
13 replies to this topic

#1 Original Poster

Original Poster

    Systems Developer

  • Tech Issues Solved: 1
  • Joined: 15-July 08
  • Location: my room
  • OS: windows 7/8, Kali, ubuntu, OSx 10.9
  • Phone: Android

Posted 08 December 2012 - 05:23

ok so i have found my java error! the real issue! now all i need to do is to solve it!!!

I need to send bytes over a socket connection ... simple as ... they have to be sent and received as bytes ... if someone could write me up a lil dummy program I can work with ? just convert a fixed string to bytes and send it as bytes and receive it as bytes the other end ... would help me out ALOT! then I can see it in action and fiddle with it


#2 psyko_x

psyko_x

    Neowinian

  • Joined: 13-July 02

Posted 09 December 2012 - 14:52

ok so i have found my java error! the real issue! now all i need to do is to solve it!!!

I need to send bytes over a socket connection ... simple as ... they have to be sent and received as bytes ... if someone could write me up a lil dummy program I can work with ? just convert a fixed string to bytes and send it as bytes and receive it as bytes the other end ... would help me out ALOT! then I can see it in action and fiddle with it


You just need a server to listen on a port and client to connect to that port. Use this guide:
http://www.oracle.co...ket-140484.html

But instead of doing "new Socket("kq6py", 4321)" on the client side, you need to pass an InetAddress object as the first parameter. The InetAddress is created by calling InetAddress.getByName() or InetAddress.getByAddress() static methods

#3 OP Original Poster

Original Poster

    Systems Developer

  • Tech Issues Solved: 1
  • Joined: 15-July 08
  • Location: my room
  • OS: windows 7/8, Kali, ubuntu, OSx 10.9
  • Phone: Android

Posted 09 December 2012 - 18:42

You just need a server to listen on a port and client to connect to that port. Use this guide:
http://www.oracle.co...ket-140484.html

But instead of doing "new Socket("kq6py", 4321)" on the client side, you need to pass an InetAddress object as the first parameter. The InetAddress is created by calling InetAddress.getByName() or InetAddress.getByAddress() static methods


I already have all the connections :p but I have been using printwriter I need to use bytearrayoutputstream ... but I am finding it difficult to find a tutorial which uses it over sockets

#4 kjordan2001

kjordan2001

    Mystery Solver

  • Tech Issues Solved: 1
  • Joined: 27-May 02

Posted 09 December 2012 - 20:07

I already have all the connections :p but I have been using printwriter I need to use bytearrayoutputstream ... but I am finding it difficult to find a tutorial which uses it over sockets

You don't use a ByteArrayOutputStream. That's something you can write to to build an in-memory byte array without having to grow it yourself.

You want to use the regular output stream provided by the socket and use the byte write methods: http://docs.oracle.c...html#write(byte[]) http://docs.oracle.c...html#write(byte[], int, int) http://docs.oracle.c....html#write(int)

String has a built-in getBytes() method that you can use to write as a byte array.

#5 OP Original Poster

Original Poster

    Systems Developer

  • Tech Issues Solved: 1
  • Joined: 15-July 08
  • Location: my room
  • OS: windows 7/8, Kali, ubuntu, OSx 10.9
  • Phone: Android

Posted 10 December 2012 - 00:14

You don't use a ByteArrayOutputStream. That's something you can write to to build an in-memory byte array without having to grow it yourself.

You want to use the regular output stream provided by the socket and use the byte write methods: http://docs.oracle.c...html#write(byte[]) http://docs.oracle.c...html#write(byte[], int, int) http://docs.oracle.c....html#write(int)

String has a built-in getBytes() method that you can use to write as a byte array.


ahh i see ... and what about the recieving end ? i tried the char writer like you previously gave me ... but for the decryption it has to be sent in bytes i cannot convert to string at any point until after it has been decrypted or i will get an error I set up a small single class test which encrypted and decrypted using only bytes ( which worked) then one which followed the same method of conversion as my current program and that just caused it to kill its self

#6 kjordan2001

kjordan2001

    Mystery Solver

  • Tech Issues Solved: 1
  • Joined: 27-May 02

Posted 10 December 2012 - 04:08

ahh i see ... and what about the recieving end ? i tried the char writer like you previously gave me ... but for the decryption it has to be sent in bytes i cannot convert to string at any point until after it has been decrypted or i will get an error I set up a small single class test which encrypted and decrypted using only bytes ( which worked) then one which followed the same method of conversion as my current program and that just caused it to kill its self

For that you could replace the CharArrayWriter with a ByteArrayOutputStream. Use the straight InputStream from the Socket though and use the read methods from that.

#7 OP Original Poster

Original Poster

    Systems Developer

  • Tech Issues Solved: 1
  • Joined: 15-July 08
  • Location: my room
  • OS: windows 7/8, Kali, ubuntu, OSx 10.9
  • Phone: Android

Posted 10 December 2012 - 04:25

For that you could replace the CharArrayWriter with a ByteArrayOutputStream. Use the straight InputStream from the Socket though and use the read methods from that.


could you give me an example code on how to implement it ? I really only learn via example sorry to be such a pain you have been a really really big help to me

#8 kjordan2001

kjordan2001

    Mystery Solver

  • Tech Issues Solved: 1
  • Joined: 27-May 02

Posted 10 December 2012 - 16:18

could you give me an example code on how to implement it ? I really only learn via example sorry to be such a pain you have been a really really big help to me


Pretty much the same as before except without Readers and such:

import java.io.*;
import java.net.*;
public class chatServer
{
public static void main (String[] args) throws IOException
{
  ServerSocket serverSocket = null;
  try
  {
   serverSocket = new ServerSocket (4444);
  }
  catch (IOException e)
  {
   System.err.println ("Could not listen on port: 4444.");
   System.exit (1);
  }
  System.out.println ("Server - Listening on port 4444");
  Socket clientSocket = null;
  try
  {
   clientSocket = serverSocket.accept ();
  }
  catch (IOException e)
  {
   System.err.println ("Accept failed."); System.exit(1);
  }
  OutputStream out = clientSocket.getOutputStream();
  BufferedReader in = clientSocket.getInputStream();
  String toClient, fromClient;
  toClient = "Hello";
  System.out.println ("Server Message: " + toClient);
  out.write(toClient.getBytes());
ByteArrayOutputStream os = new ByteArrayOutputStream();
byte[] buf = new byte[4096];
int read;
while ((read=in.read(buf, 0, 4096))>0) {
System.out.println("x");
   os.write(buf, 0, read);

}
fromClient = os.toString(); //Or for bytes use toByteArray()
  System.out.println ("Client Message: " + fromClient);
  out.close ();
  in.close ();
  clientSocket.close ();
  serverSocket.close ();
}
}

It would definitely benefit you to learn to read the javadocs: http://docs.oracle.c...ase/7/docs/api/

#9 OP Original Poster

Original Poster

    Systems Developer

  • Tech Issues Solved: 1
  • Joined: 15-July 08
  • Location: my room
  • OS: windows 7/8, Kali, ubuntu, OSx 10.9
  • Phone: Android

Posted 10 December 2012 - 20:37

Pretty much the same as before except without Readers and such:

import java.io.*;
import java.net.*;
public class chatServer
{
public static void main (String[] args) throws IOException
{
  ServerSocket serverSocket = null;
  try
  {
   serverSocket = new ServerSocket (4444);
  }
  catch (IOException e)
  {
   System.err.println ("Could not listen on port: 4444.");
   System.exit (1);
  }
  System.out.println ("Server - Listening on port 4444");
  Socket clientSocket = null;
  try
  {
   clientSocket = serverSocket.accept ();
  }
  catch (IOException e)
  {
   System.err.println ("Accept failed."); System.exit(1);
  }
  OutputStream out = clientSocket.getOutputStream();
  BufferedReader in = clientSocket.getInputStream();
  String toClient, fromClient;
  toClient = "Hello";
  System.out.println ("Server Message: " + toClient);
  out.write(toClient.getBytes());
ByteArrayOutputStream os = new ByteArrayOutputStream();
byte[] buf = new byte[4096];
int read;
while ((read=in.read(buf, 0, 4096))>0) {
System.out.println("x");
   os.write(buf, 0, read);

}
fromClient = os.toString(); //Or for bytes use toByteArray()
  System.out.println ("Client Message: " + fromClient);
  out.close ();
  in.close ();
  clientSocket.close ();
  serverSocket.close ();
}
}

It would definitely benefit you to learn to read the javadocs: http://docs.oracle.c...ase/7/docs/api/


thanks i will try this and observe ... I know it would help to learn to read them ... but I honestly do not understand them ... I can only ever do stuff when I have seen it used before I need a context and I dunno why I cant grasp the docs probs not reading it completely (I skim)

#10 OP Original Poster

Original Poster

    Systems Developer

  • Tech Issues Solved: 1
  • Joined: 15-July 08
  • Location: my room
  • OS: windows 7/8, Kali, ubuntu, OSx 10.9
  • Phone: Android

Posted 10 December 2012 - 21:59

when I change it around it keeps saying



^
required: BufferedReader
found: InputStream
chatServer.java:36: error: no suitable method found for read(byte[],int,int)
while ((read=in.read(buf, 0, 4096))>0) {
^
method BufferedReader.read(char[],int,int) is not applicable

#11 kjordan2001

kjordan2001

    Mystery Solver

  • Tech Issues Solved: 1
  • Joined: 27-May 02

Posted 10 December 2012 - 22:53

Replace BufferedReader with InputStream.

The docs aren't all that hard to read. It's a listing of methods and fields from classes with (hopefully) a description of them and some even with examples. Of course finding the class you need if you don't know what to look for might be a little tricky.

#12 OP Original Poster

Original Poster

    Systems Developer

  • Tech Issues Solved: 1
  • Joined: 15-July 08
  • Location: my room
  • OS: windows 7/8, Kali, ubuntu, OSx 10.9
  • Phone: Android

Posted 11 December 2012 - 00:56

Replace BufferedReader with InputStream.

The docs aren't all that hard to read. It's a listing of methods and fields from classes with (hopefully) a description of them and some even with examples. Of course finding the class you need if you don't know what to look for might be a little tricky.



I got it working ish haha just working through the bugs (only got it working as in no errors lol.... and sending data... yet to get everything sending 100% )

#13 OP Original Poster

Original Poster

    Systems Developer

  • Tech Issues Solved: 1
  • Joined: 15-July 08
  • Location: my room
  • OS: windows 7/8, Kali, ubuntu, OSx 10.9
  • Phone: Android

Posted 11 December 2012 - 01:47

Replace BufferedReader with InputStream.

The docs aren't all that hard to read. It's a listing of methods and fields from classes with (hopefully) a description of them and some even with examples. Of course finding the class you need if you don't know what to look for might be a little tricky.


ok new problem haha... I am sending the bytes... but when the bytes arrive they are different? I think its byting my bytes?

#14 OP Original Poster

Original Poster

    Systems Developer

  • Tech Issues Solved: 1
  • Joined: 15-July 08
  • Location: my room
  • OS: windows 7/8, Kali, ubuntu, OSx 10.9
  • Phone: Android

Posted 11 December 2012 - 04:24

Replace BufferedReader with InputStream.

The docs aren't all that hard to read. It's a listing of methods and fields from classes with (hopefully) a description of them and some even with examples. Of course finding the class you need if you don't know what to look for might be a little tricky.


I got it working! its a christmas miracle! 100% working encryption decryption !! :D