• 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

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

  • 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

  • 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.

  • 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

  • 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.

  • 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

  • 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/

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

  • 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

  • 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.

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

  • 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?

  • 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

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

    • No registered users viewing this page.
  • Posts

    • Same for me. I find Adguard in general just OK. Ublock Orgin Lite works and works well. I use it on Chrome, Edge, and Safari on MacOS and iPadOS/iOS.
    • I do not use the AdGuard extension. I have uninstalled both the uBlock and Stylus extensions, as well as the Tampermonkey extension, since I began using AdGuard for Windows 7 months ago. It does not use any extension APIs, it modifies traffic system wide using a local proxy. AdGuard performs all the functions of uBlock, as well as additional features such as HTTPS filtering, cosmetic (user scripts and user styles), as well as DNS. It works with any browser and application. I don't understand why you consider the desktop program to be useless...
    • Should Google be forced to stop promoting Chrome over other browsers? Google pushes Chrome to anyone visiting its website using browsers other than Chrome.
    • Save 31% on Samsung T7 Portable SSD by Taras Buria During the ongoing memory crisis, where RAM and storage get extremely expensive, it is hard to find a good deal on an internal or portable SSD. While we are far away from 2024 prices, Samsung is currently offering a big discount on its 1TB T7 Portable SSD, saving you 31% or $85. The discount applies to the 1TB variant, which, although not record-breaking, is still plenty for all sorts of data. The drive uses a USB-C port for universal compatibility and high-speed data transfer of up to 1,050 megabytes per second. Samsung claims this drive is nearly ten times faster than a conventional hard drive, plus you get all the benefits of solid-state memory, such as better drop and shock resistance. There is also the ability to password-protect the drive, and you get extra peace of mind with a limited three-year warranty. The Samsung T7 Portable SSD works with all modern computers and tablets, including iPhones, iPads, Android smartphones, and more. And thanks to the two bundled USB cables (Type-C and Type-A), you can use the T7 even with devices that lack USB Type-C ports. The T7 Portable is available in three colors and four storage configurations, but unfortunately, only the 1TB Titan Gray is discounted: 1TB Samsung T7 Portable SSD - $189.98 | 31% off on Amazon This Amazon deal is US-specific and not available in other regions unless specified. This is a first-party seller link (at the time of article publishing); ensure that you also purchase from a first-party seller link only. If you don't like it or want to look at more options, check out the previous deals that we have covered, OR you can also visit Amazon US deals page. Get Prime (SNAP), Prime Video, Audible Plus or Kindle / Music Unlimited. Free for 30 days. As an Amazon Associate, we earn from qualifying purchases.
    • Plenty of nations have risen from the ashes of war and today they have high standards of living. Maybe the problem is that your government is run by corrupt and power hungry terrorist organizations that keep the country in the **** because all they care about is filling up their pockets and maintaining their power instead of actually managing the country for the benefit of everyone. Just ask Russians, North Koreans, Iranians, Cubans, Venezuelans and Nicaraguans, etc.
  • Recent Achievements

    • Week One Done
      rubentuben8 earned a badge
      Week One Done
    • Week One Done
      ARaclen earned a badge
      Week One Done
    • One Year In
      jojodbn earned a badge
      One Year In
    • One Month Later
      jojodbn earned a badge
      One Month Later
    • Week One Done
      jojodbn earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      524
    2. 2
      PsYcHoKiLLa
      232
    3. 3
      +Edouard
      132
    4. 4
      ATLien_0
      88
    5. 5
      Steven P.
      83
  • Tell a friend

    Love Neowin? Tell a friend!