send 后马上关闭socket,数据能正常发送出去吗 在服务器端我想做成回应了客户端的数据就关闭SOCKET,...send(...);closesocket(...)这样做行吗?别笑我,我是新手。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 好象不能马上就关闭SOCKET,最好Sleep()一段时间再关闭 NO,The data may lost The best method is to set the linger time,it ensures the data was sent succeedlyand The sleep function may be ok,but it it not the standard method 如果设置了延时,则有可能不丢数据//延时设置linger m_sLinger;m_sLinger.l_onoff = 1; // (在closesocket()调用,但是还有数据没发送完毕的时候容许逗留)m_sLinger.l_linger = 0; // (容许逗留的时间为0秒)setsockopt(sockConnected,SOL_SOCKET,SO_LINGER,(const char*)&m_sLinger,sizeof(linger)); 还有,如果你用的是socket API,可以通过Socket close 返回,WSAGetLastError来判断是不是正在有数据通讯的.参见MSDN closesocket() 借地方再问个问题哈.如果客户端send(..)后,服务器接收到,然后closesocket了,同时客户端又send了数据.那么此同发送的数据,客户端这边会显示成功吗? send will failed with return value -1,you can retrieve more information by calling WSAGetLastErorr() 如果采用blocking则send返回时数据已经发送,是可以关闭的,但是在closesocket前最好先shutdown. 调用shutdown可以关闭,以保证发送完成,TCP/IP协议会保证这事情。 最好 sleep 一下,我試的就有點問題 DLL为什么不响应? 请教: 如何获取精确的时间 最好能精确到ms的 又有项目了(开发工具选用) 紧急问题,回答立刻给分 鼠标事件如何处理? CString型变量如何换行? 如何给对话框加背景 tcp连接时,服务器正在发送数据,客户端停止接收,则程序出错,怎么解决? 关于画图重绘问题 为什么我在 ActiveX 控件中定义的事件在JScript or VBScript中不能捕获 为什么我的类向导里没有新添加控件的ID 对话框构造函数问题!哥哥们帮忙
and The sleep function may be ok,but it it not the standard method
//延时设置
linger m_sLinger;m_sLinger.l_onoff = 1; // (在closesocket()调用,但是还有数据没发送完毕的时候容许逗留)m_sLinger.l_linger = 0; // (容许逗留的时间为0秒)setsockopt(sockConnected,SOL_SOCKET,SO_LINGER,(const char*)&m_sLinger,sizeof(linger));
如果客户端send(..)后,服务器接收到,然后closesocket了,同时客户端又send了数据.
那么此同发送的数据,客户端这边会显示成功吗?