сервер в Java, клиент в C - не может получить данные - PullRequest
0 голосов
/ 19 января 2012

Я пишу код для клиента сервера tcp-ip ... Проблема, с которой я сталкиваюсь, заключается в следующем: мой сервер находится на Java и прослушивает порт, если что-то, что он обнаружил, просто печатает найденное.

У меня есть клиент на Java и клиент на C. Когда я использую свой Java-клиент и отправляю String «hello server» - сервер находит это и печатает, НО, когда клиент C отправляет его, используя «send» из winsock.h, Java-сервер выдает ошибку в строке :: (I использовали Buffereader и readline для получения данных из порта tcp-ip на сервере Java)

        commandFromPortal = inFromClient.readLine();

и ошибки: *

           Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
at java.io.InputStreamReader.read(Unknown Source)
at java.io.BufferedReader.fill(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at org.snmp4j.NOCAlarmManager.Clientnew.run

Что мне делать ??? Любое предложение ??

Ответы [ 2 ]

1 голос
/ 19 января 2012

Звучит так, как будто сокет буферизуется, когда вы пишете в него, и данные в очереди не сбрасываются (отправляются) до того, как вы закроете сокет (вы закрываете его правильно, верно?).Тот факт, что он работает при добавлении новой строки (\n), кажется, подтверждает это.Поэтому вы должны очистить буфер на сокете, прежде чем закрыть его.Я не работаю с winsocks, но с этого веб-сайта я полагаю, вам следует позвонить shutdown(sock,SD_SEND) (если это не сработает, обратитесь к документации winsock, чтобы узнать, как очистить буфер сокетов).

0 голосов
/ 19 января 2012

Вам необходимо использовать промежуточное ПО для обеспечения прозрачности.

Среды промежуточного программного обеспечения предназначены для маскировки разнородности сетей и оборудования. Большинство сред промежуточного программного обеспечения также маскируют неоднородность операционных систем или языков программирования, или обоих.
Можно использовать несколько таких, как CORBA .

...