2013-05-02 95 views
1

我想提出一個庫,基本上是一個代理,它是做這樣:每個送出數據調用時保持變量狀態在圖書館

socket s = -1; 

void sendData(data){ 
    if(s == -1) 
     s = createSocket(); 

} 

奇怪的createSocket被調用時,不能保持套接字狀態.. 。爲什麼?在服務器端,我得到的是插座發送數據後關閉,所以s是真正關閉...

編輯: 這是創建套接字的簽名:

SOCKET createSocket() 

回答

7

你永遠不更新的s值在你的代碼中。 createSocket按值顯示參數socket。這意味着它將在s的本地副本上運行,而不是您要更新的全局成員。

你需要改變的createSocket簽名像

socket createSocket(void); 
... 
s = createSocket(); 

createSocket(socket* s); 
... 
createSocket(&s); 

代替