Я просто пытаюсь проверить отправку байтов через соединение TCP-сокета, я знаю, что на самом деле это не предназначалось для этого, но я просто пытаюсь выяснить, возможно ли это или нет.
что я пытаюсь сделать:
получить байты из строки на клиенте
отправил его как байты на сервер
получить байты на сервере и декодировать их обратно в исходную строку
Клиент:
package ByteClientServer;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.*;
public class Client {
String hostAddress = "localhost";
int port = 1010;
public Client()
{
try {
Socket socket = new Socket(hostAddress, port);
String test = "hello"; //dycrypt bytes from this string on server side
byte[] byteArray = test.getBytes();
OutputStream out = socket.getOutputStream();
DataOutputStream dos = new DataOutputStream(out);
dos.write(byteArray);
}
catch (UnknownHostException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
new Client();
}
}
Сервер:
package ByteClientServer;
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args)
{
try
{
ServerSocket server = new ServerSocket(1010);
server.setSoTimeout(0);
Socket connectionToClient = server.accept();
InputStream is = connectionToClient.getInputStream();
DataInputStream dis = new DataInputStream(is);
byte[] data = dis.readUTF().getBytes();
//dis.readFully(data, 0, data.length);
String s = new String(data);
System.out.println(s);
}
catch(IOException e)
{
e.printStackTrace();
//System.err.println("Server was terminated.");
}
}
}
ему не нравится эта строка на сервере:
byte[] data = dis.readUTF().getBytes();
и выдает исключение:
java.net.SocketException: сброс соединения на java.net.SocketInputStream.read(неизвестный источник) на java.net.SocketInputStream.read(неизвестный источник) на java.io.DataInputStream.readFully(неизвестный источник) на java.io.DataInputStream .readUTF(неизвестный источник) в java.io.DataInputStream.readUTF(неизвестный источник) в ByteClientServer.Server.main(Server.java:21)