java - Java 中的服务器,C 中的客户端 - 无法获取数据

标签 java c sockets tcp ip

我正在为 tcp-ip 服务器客户端编写代码...我面临的问题是::我的服务器使用 Java 并监听端口,如果它发现任何内容,它只会打印它发现的内容。

我有一个 Java 客户端和 C 客户端。当我使用我的Java客户端并发送字符串“hello server”时 - 服务器找到并打印该内容,但是当C客户端使用winsock.h的“send”发送它时,Java服务器在行上给出错误::(I在Java服务器中使用Bufferreader和readline从tcp-ip端口获取数据)

        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

我该怎么办???有什么建议吗?

最佳答案

听起来当您写入套接字时套接字正在缓冲,并且在关闭套接字之前排队的数据没有被刷新(发送)(您正在正确关闭它,对吧?)。当您添加换行符(\n)时它起作用的事实似乎证实了这一点。因此,在关闭套接字之前,您必须刷新套接字上的缓冲区。我不使用winsocks,而是使用this website我认为您应该调用 shutdown(sock,SD_SEND) (如果这不起作用,请检查 Winsock 文档以了解如何刷新套接字缓冲区)。

关于java - Java 中的服务器,C 中的客户端 - 无法获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8930537/

相关文章:

javascript - IE 没有在 onblur 事件中调用函数

c - 在 linux 中保存 session 或进程状态

java - 需要java套接字中的端口转发帮助(带AWS服务器的AWS CISCO路由器)

java - X 类没有可用的 MessageBodyWriter

java - 在java中将int转换为byte

java - Couchbase 查询未按预期工作

python - 优化具有多个客户端的简单服务器

java 内存设置 amazon m3.xlarge

c fscanf 错误检查

linux - UNIX 域套接字不能跨用户访问?