日期:2014-05-16  浏览次数:20642 次

Linux下Socket通信问题
写了2个C++程序,使用send函数和recv函数在TCP下发送数据,客户端连接到服务端后,服务端发送的数据不能及时显示在客户端,直到关闭程序时客户端才收到信息,后来在网上查询发现是send写入缓冲问题,并不是立刻发送。请问怎么才可以立即发送呢?
java下是可以立刻发送。难道C/C++不能??

------解决方案--------------------
我刚刚测试了一下,用你的那个服务端代码,然后用c写的客户端,确实是没有问题的。
根据8楼的建议,检查一下客户端。
------解决方案--------------------
BufferedReader.readLine 
Read a line of text. A line is considered to be terminated by any one of a line feed ('\n'), a carriage return ('\r'), or a carriage return followed immediately by a linefeed. 
要有\r 或\n你看你服务端的代码只是发送
"Hello,you are connected."
readline就阻塞了吧,然后你服务器端退出的时候,Java的客户端读到了连接关闭的消息,才退出阻塞