保持变量状态在图书馆

问题描述:

我想提出一个库,基本上是一个代理,它是做这样:每个送出数据调用时保持变量状态在图书馆

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); 

代替