和POS通讯,closesocket有问题

dulei115 2007-12-12 01:05:53
我的服务端程序在Windows下运行,一个连接一个线程,在收到FD_CLOSE消息时,执行closesocket。
POS端是这么说的,在交易结束时,会发送一个FIN过来,等待服务端程序发送回一个ACK。(我不懂这个)

现在的情况是,POS端经常会因为收不到ACK而在那里长时间等待,死机!哪位碰到过这种情况,知道怎么回事?

用这个setsockopt(s,SOL_SOCKET,SO_LINGER,(char *)&lig,iLen);可以不??我都了解这个?不知道用了能不能解决这个问题?又会不会引发出新的问题来?
...全文
146 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dulei115 2007-12-17
  • 打赏
  • 举报
回复
问题解决了,出在路由上,机器上装的是双网卡,路由没有配置好。。。。。。。。。结贴,散分!
dulei115 2007-12-12
  • 打赏
  • 举报
回复
写错了,出这种错误时,服务端用”nenstat -an"命令看到的该连接的状态是LAST_WAIT

dulei115 2007-12-12
  • 打赏
  • 举报
回复
FIN、ACK都是些TCP协议(可能是更底层的协议)里面的东东,我的代码中就只是一个closesocket,正常情况下Windows根据协议会去发个ACK,不是我代码里面实现发的。现在就是我调用closesocket的时候Windows好像没有发送出去。而且不是一直这样,而是时有时无。

是不是socket的哪个属性需要设置一下?

出这种错误的时候,用”nenstat -an"命令看到的该连接的状态是LAST_ACK,维持几分钟后才断开。

等待高手出来解决问题。谢谢了!!
jourbin 2007-12-12
  • 打赏
  • 举报
回复
楼主,不确定的话,可以先用PC端口模拟啊,确认问题所在,就好解决了
你现在这样说,连你自己都不知道是不是你那边没发,还是POS端没收到,更别说我们了
ddzz2001 2007-12-12
  • 打赏
  • 举报
回复
是你没有发,还是POS即没有收到?
socket在关闭的时候,你是知道的,你给POS机回一个ACK(确认帧)啊.
POS机设置超时,超时后重新连接啊.
dulei115 2007-12-12
  • 打赏
  • 举报
回复
1楼的,用强制关闭??可以吗?现在不是我这边没关,是POS端那边没收到我关闭的信号
setsockopt(s,SOL_SOCKET,SO_DONTLINGER,(const char*)&bDontLinger,sizeof(BOOL));
jourbin 2007-12-12
  • 打赏
  • 举报
回复
http://www.infosecurity.org.cn/article/networksec/program/23851.html

16,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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