保持变量状态在图书馆
问题描述:
我想提出一个库,基本上是一个代理,它是做这样:每个送出数据调用时保持变量状态在图书馆
socket s = -1;
void sendData(data){
if(s == -1)
s = createSocket();
}
奇怪的createSocket被调用时,不能保持套接字状态.. 。为什么?在服务器端,我得到的是插座发送数据后关闭,所以s是真正关闭...
编辑: 这是创建套接字的签名:
SOCKET createSocket()
答
你永远不更新的s
值在你的代码中。 createSocket
按值显示参数socket
。这意味着它将在s
的本地副本上运行,而不是您要更新的全局成员。
你需要改变的createSocket
签名像
socket createSocket(void);
...
s = createSocket();
或
createSocket(socket* s);
...
createSocket(&s);
代替