I’m trying to make a Java TCP client and a node.js TCP server talk together.
This is my code at the moment :
-
The Java client
import java.net.;
import java.io.;public class Client2{
public static void main(String[] args) throws Exception{ Socket s = new Socket("192.168.1.35",8500); DataOutputStream dos = new DataOutputStream(s.getOutputStream()); dos.writeUTF("abcdefgh"); dos.close(); s.close(); }}
-
the Node.js Server
var net = require(‘net’),
server = net.createServer();server.on(‘connection’, function (client) {
console.log('Hello World !'); client.on('data', function(data) { var message = data.toString('utf8'); console.log('***' + message +'***'); });});
server.listen(8500);
This example will give this result back :
Hello World !
**abcdefgh***
-
but with this as input :
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
it gives this back :
Hello World !
***�abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz***
-
with this input :
qq32we3w87d 38s1d87s4df7s4d1+s2d7f+sfdsf4sà$àà3663%ç%&ç%&ç
it gives this back :
Hello World !
***@qq32we3w87d 38s1d87s4df7s4d1+s2d7f+sfdsf4sà$àà3663%ç%&ç%&ç***
tldr: Sometimes when logging the buffers, node adds characters (rectangles with numbers or ?) at the beginning or event cuts some characters at the start out.
– How can I log buffers and assign them to a variable the right way ?
I’m not an expert on DataOutputStream, but if it really is adding extra characters, you should use something else.
When I did server stuff, I used BufferedReader and BufferedWriter. It looks like this:
NOTE, IF YOU’RE GOING TO DEAL WITH LARGE PAGES, THIS COULD CAUSE A PROBLEM, AS THE BUFFEREDREADER AND BUFFEREDWRITER WILL FILL UP BEFORE YOU’RE READY. if this is a problem I’d look into the other Reader and Writer classes. They are quite plentiful, as I understand it, and one should suit your needs.