ZockerLordLP
Erfahrenes Mitglied
Hallo Community,
da ich nicht weiß ob ich es eher im C++ oder Java Bereich posten soll schreibe ich es mal hier
Und zwar habe ich ein Problem mit einem Socket.
Das Problem jetzt, dass ich beim C++ Server den Fehler "Fehler beim Empfangen von Client-Daten!" bzw. "Connection reset by peer".
Der Server ist dieser hier: https://github.com/THOMAS-Projekt/THOMAS/blob/master/TCPServer.cpp#L165
Zeile 165.
Wenn ich statt dos.write(myByteArray), dos.writeInt(1) benutze, kommt der Fehler: "Das Kommando Byte ist ungültig".
https://github.com/THOMAS-Projekt/THOMAS/blob/master/MotorControl.cpp#L241 Zeile 241
Wenn ich einen einfachen Java Server verwende, tritt dieses Problem nicht auf.
Weiß einer woran das liegen könnte? Ich würde gerne das Java Programm anpassen, nicht den C++ Server
da ich nicht weiß ob ich es eher im C++ oder Java Bereich posten soll schreibe ich es mal hier
Und zwar habe ich ein Problem mit einem Socket.
Code:
public class Main {
static Socket socket;
static SocketUtil sUtil = new SocketUtil();
static String ip = "192.168.178.6";
static int port = 4242;
static byte[] header = new byte[3];
public static void main(String[] args) throws IOException{
header[0] = 1;
header[1] = 3;
header[2] = 4;
System.out.println(header.length);
socket = sUtil.connectSocket(ip, port);
sUtil.sendBytes(socket, header, 0, header.length);
}
}
public class SocketUtil {
public Socket connectSocket(String ip, int port){
Socket socket = null;
try {
socket = new Socket(ip,port);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return socket;
}
public void sendBytes(Socket socket, byte[] myByteArray, int start, int len) throws IOException {
if (len < 0)
throw new IllegalArgumentException("Negative length not allowed");
if (start < 0 || start >= myByteArray.length)
throw new IndexOutOfBoundsException("Out of bounds: " + start);
OutputStream out = socket.getOutputStream();
DataOutputStream dos = new DataOutputStream(out);
if (len > 0) {
dos.write(myByteArray);
}
}
}
Das Problem jetzt, dass ich beim C++ Server den Fehler "Fehler beim Empfangen von Client-Daten!" bzw. "Connection reset by peer".
Der Server ist dieser hier: https://github.com/THOMAS-Projekt/THOMAS/blob/master/TCPServer.cpp#L165
Zeile 165.
Wenn ich statt dos.write(myByteArray), dos.writeInt(1) benutze, kommt der Fehler: "Das Kommando Byte ist ungültig".
https://github.com/THOMAS-Projekt/THOMAS/blob/master/MotorControl.cpp#L241 Zeile 241
Wenn ich einen einfachen Java Server verwende, tritt dieses Problem nicht auf.
Code:
public static void main(String[] args) throws IOException{
ServerSocket ssocket = new ServerSocket(1234, 10);
Socket csocket = ssocket.accept();
InputStream stream = csocket.getInputStream();
byte[] data = new byte[3];
int count = stream.read(data);
for(int i = 0; i<data.length;i++){
System.out.println(data);
}
}
Weiß einer woran das liegen könnte? Ich würde gerne das Java Programm anpassen, nicht den C++ Server