通信 ?close(sock)返回-1,为何?有源代码

yangmas1 2003-09-03 12:04:47
以下在sco unix下正常,但移到VC6(window)下编译正常,运行则ret =close(sock)返回为-1; 是不是在vc6下要用其它方法关闭sock

以下是客户端程式
/*0-成功 -1连接失败 -2发送失败 -3接收失败 -4加密错 -5解密错*/
int ds_wdtoqz_cli(unsigned char *send_buf,unsigned char *recv_buf,char *hostname ,u_short port,int timeout,char *mkey,char *wkey)
{
int sock ;
int ret ;

sock = ds_socketClient(hostname, port, 1) ;
if (sock == 0) {
GClog_print(__FILE__,__LINE__,"ERROR hostname=[%s],port=[%d]",hostname,port);
return(-1);
}


ret = ds_send(sock,send_buf) ;
if(ret<=0)
{
GClog_print(__FILE__, __LINE__, "ERROR ds_send() ret=[%d]",ret);
close(sock) ;
return(-2) ;
}

ret = ds_recv(sock,recv_buf,timeout) ;
if(ret <= 0)
{
GClog_print(__FILE__, __LINE__,"ERROR ds_recv() ret=[%d]",ret);
close(sock) ;
return(-3) ;
}


ret = close(sock) ;

GClog_print(__FILE__, __LINE__, "close ret=[%d]",ret);
/*ret为什么会是-1*/
return(0) ;

}



...全文
111 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzyu 2003-09-21
  • 打赏
  • 举报
回复
这是WINDOWS下的程序。应用closesocket(),而在linux或unix下才用close();
l1ul1u 2003-09-10
  • 打赏
  • 举报
回复
应该用closesocket()
lastshrill 2003-09-10
  • 打赏
  • 举报
回复
close是linux下的,windows用closesocket
晨星 2003-09-03
  • 打赏
  • 举报
回复
有“close”这么个关闭socket的函数吗?
应该是closesocket吧?
ZHENG017 2003-09-03
  • 打赏
  • 举报
回复
with vc6:
shutdown(stListen,SD_BOTH);
closesocket(stListen);
ruanyuping 2003-09-03
  • 打赏
  • 举报
回复
up

24,855

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧