【发布时间】:2017-09-16 14:52:56
【问题描述】:
希望你一切都好。
我的问题是我有一个在 Java 上运行的服务器和一个在 C 上运行的客户端。将数据从 Java 发送到 C 根本不是问题,非常顺利。但是当我尝试从 C 写到 Java 时,TCP 消息直到我终止 C 程序(Ctrl + C)才到达那里,然后我可以在我的 Java 程序中看到该消息。
我尝试刷新标准输出和标准输入,但这也不起作用。
这是我应该写入 Javaclient 的 c 代码:
void *sendToGUI(struct SocketStruct *sockServer){
char *msg = "Try to send to Java";
int len, bytes_sent;
len = strlen(msg);
write(sockServer->javaSocket, msg, len);
}
该方法在线程中运行,接收方也在线程中运行。虽然,正如我所说,接收消息是没有问题的。
任何人都知道它可以是什么?
提前致谢!
【问题讨论】:
-
请写Minimal Complete Verifiable Example。它将帮助您隔离问题,如果问题仍然存在,您可以在此处提问。
-
谷歌
TCP_NODELAY -
您应该保留并使用来自
write(或send)的结果计数 -
我确实尝试过使用 TCP_NODELAY,但不起作用。并且有一个来自 write 和 send 的结果 int,结果他们没有 -1。
-
您是否有机会通过 WireShark 看到它发生的情况?它会让你确定问题出在哪一边。
标签: c multithreading sockets