У меня такое чувство, что моя проблема немного странная, но здесь все идет ...
У меня есть программа C ++ (из другой организации), которая взаимодействует с камерой, подключенной к оборудованию через Ethernet, с помощью сокетов.На первый взгляд, первоначальная функция, которая отправляет сообщение в сокет, выглядит так:
char* cmd = "#TRGON\x0d";
m_pClient->Socket_Write( (BYTE*)cmd, strlen( cmd ));
После просмотра копания в коде я обнаружил функцию на самом низком уровне, которая фактически отправляет данные:
// Try to send what's in the buffer
int nFlags = 0;
int nSent = ::send( m_hSocket, (char*)m_pSendBuffer, m_nSendBufLen, nFlags );
...checking for errors, etc.
Теперь программе, над которой я работаю, необходимо отправить аналогичную команду на камеру, за исключением того, что она написана на Java.Я играл с сокетами Java весь день и не смог заставить камеру делать что-либо, кроме как подключиться к соответствующему адресу (есть команда для включения светодиодов).
Я искал в Интернете и увидел, что эта команда «send» взята из библиотеки Winsock, которую инкапсулирует программа C ++.Есть ли подобный способ сделать это в Java?Или я просто не использую правильную комбинацию DataOutputStreams, сокетов и т. Д. В Java?Есть ли какой-то «импортный winsock», который я пропускаю (Гугл, кажется, говорит, что такого нет)?
Большое спасибо за любую помощь.1016 * Я не знаю, поможет ли какой-нибудь код!На данный момент я просто делаю простые вещи: подключаюсь и пытаюсь писать в него.Кажется, я попробовал каждую комбинацию, преобразование и т. Д. Это всего лишь некоторый тестовый код (очевидно, не надежный или неправильный, как блок catch):
InetAddress addr = null;
Socket sock = null;
ObjectInputStream in = null;
ObjectOutputStream out = null;
String msg = "#TRGON\\x0d";
try {
addr = InetAddress.getByAddress(new byte[] { (byte) 192, (byte) 168,
(byte) 81, (byte) 58 });
sock = new Socket(addr, PORT);
out = new ObjectOutputStream(sock.getOutputStream());
out.writeBytes(msg);
in = new ObjectInputStream(sock.getInputStream());
} catch (IOException e) {
e.printStackTrace();
}
Он висит на последней строке, в= новый ... как будто он не принимает любой тип входного потока с камеры.Я знаю, что могу продолжать играть с этим, но любой внешний совет приветствуется.