Отправка данных через сокеты (от Java до C)

56
6

Я пытаюсь отправить некоторые зашифрованные целые числа между Java как клиент и C как сервер, используя симметричный ключ, и вот код.... Проблема в том, что я не могу прочитать числа или целые числа !!!! Я использую функцию writeInt на стороне Java, чтобы сначала отправить число цифр, чтобы использовать их в цикле для шифрования/дешифрования каждого номера отдельно, затем я использую симметричный ключ для шифрования/дешифрования всего числа. Любая идея, как заставить его работать?

Это код Java:

public void sendData(int data) throws IOException
{
int dataInInt = data, numberOfDigits = 0;
System.out.println("DATAININT = " + dataInInt);
while(dataInInt != 0)
{
dataInInt /= 10;
numberOfDigits++;
}
dataInInt = data;

System.out.println("Number of digits to be sent = " + numberOfDigits);
dout.writeInt(numberOfDigits);

int [] dataInDigits = new int [numberOfDigits];
for (int j = (numberOfDigits - 1); j >= 0; j--)
{
dataInDigits[j] = dataInInt % 10;
dataInInt /= 10;
}

int [] dataToSendInt = new int [numberOfDigits];
for (int i = 0; i < dataToSendInt.length; i++)
{
dataToSendInt[i] = dataInDigits[i] ^ symmetricKeyInDigits[i % symmetricKeyInDigits.length];
System.out.println("TOSEND = " + dataToSendInt[i]);
dout.writeInt(dataToSendInt[i]);
}
}

Это сторона С:

char *receiveData(int sock)
{
int counter = 0, i = 0, j = 0;
char buffer[256];
bzero(buffer, 256);

int tempKey = symmetricKeyInt, KeyDigitsNumber = 0;
while (tempKey > 0)
{
tempKey /= 10;
KeyDigitsNumber++;
}
tempKey = symmetricKeyInt;

int KeyArr[KeyDigitsNumber];
for (j = KeyDigitsNumber - 1; j >= 0; j--)
{
KeyArr[j] = tempKey % 10;
tempKey = tempKey / 10;
}

read(sock, buffer, 255);
int bufferSize = ntohl(*((int*)&buffer))
char *temp;
char *decrypted = malloc(bufferSize);
char numBuffer[20];
int testInt;
int encInt;

for (j = 0; j < bufferSize; j++)
{
bzero(numBuffer, 20);
read(sock, numBuffer, 19);
testInt = ntohl(*((int*)&numBuffer)) ^ KeyArr[j %KeyDigitsNumber];
sprintf(temp, "%d", testInt);
decrypted[j] = temp;
}
printf("THis from inside receiveData function: %s\n", (char *)decrypted);
return decrypted;
}

спросил(а) 2018-02-05T21:20:00+03:00 2 года, 6 месяцев назад
1
Решение
77

Вместо того, чтобы отправлять их как целые числа и использовать writeInt, скорее отправляйте целые числа в виде строки и конвертируйте их с обеих сторон. Также используйте printWriter.

ответил(а) 2018-02-05T21:50:00+03:00 2 года, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема