我正在制作一个基本上是代理的库,它是这样做的:
socket s = -1;
void sendData(data){
if(s == -1)
s = createSocket();
}
奇怪的是,每次调用sendData时都会调用createSocket,socket状态没有得到维护…为什么在服务器端,我发现在发送数据后套接字关闭,所以s实际上是关闭的。。。
编辑:
这是create socket的签名:
SOCKET createSocket()
最佳答案
您永远不会更新代码中s
的值createSocket
似乎按值接受一个socket
参数。这意味着它将在s
的本地副本上操作,而不是您要更新的全局成员。
您需要更改createSocket
的签名
socket createSocket(void);
...
s = createSocket();
或
createSocket(socket* s);
...
createSocket(&s);
相反
关于c - 维护库中的变量状态,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16339854/