• 0

found my java problem need help solving!


Question

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

Link to comment
Share on other sites

13 answers to this question

Recommended Posts

  • 0

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.com/technetwork/java/socket-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

Link to comment
Share on other sites

  • 0

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

Link to comment
Share on other sites

  • 0

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.com/javase/7/docs/api/java/io/OutputStream.html#write(byte[]) http://docs.oracle.com/javase/7/docs/api/java/io/OutputStream.html#write(byte[], int, int) http://docs.oracle.com/javase/7/docs/api/java/io/OutputStream.html#write(int)

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

Link to comment
Share on other sites

  • 0

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

Link to comment
Share on other sites

  • 0

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.

Link to comment
Share on other sites

  • 0

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

Link to comment
Share on other sites

  • 0

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.com/javase/7/docs/api/

Link to comment
Share on other sites

  • 0

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)

Link to comment
Share on other sites

  • 0

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

Link to comment
Share on other sites

  • 0

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.

Link to comment
Share on other sites

  • 0

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% )

Link to comment
Share on other sites

  • 0

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?

Link to comment
Share on other sites

  • 0

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

Link to comment
Share on other sites

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.