2010-04-30 152 views
0

我有一個服務器端程序,用於創建偵聽服務器端套接字。發生的問題是,好像客戶端發送一個連接請求,如果服務器端套接字正在監聽,它將被拒絕,但如果服務器端程序未在運行,則連接請求將被連接。我可以在調試時看到服務器端程序獲取客戶端請求。看起來好像客戶端無法連接到偵聽套接字。有關決議的任何建議?服務器/客戶端服務器連接

服務器端接受代碼片段就是這樣。

void CSocketListen::OnAccept(int nErrorCode) 
    { 
    CSocket::OnAccept(nErrorCode); 

    CSocketServer* SocketPtr = new CSocketServer(); 
    if (Accept(*SocketPtr)) 
    { 
     // add to list of client sockets connected 
    } 
    else 
    { 
     delete SocketPtr; 
    } 

The client side code connect is like this. 

    SOCKET cellModem; 
    sockaddr_in handHeld; 
    handHeld.sin_family = AF_INET; //Address family  
    handHeld.sin_addr.s_addr = inet_addr("127.0.0.1");  
    handHeld.sin_port = htons((u_short)1113); //port to use 

    cellModem=socket(AF_INET,SOCK_STREAM,0);  

    if(cellModem == INVALID_SOCKET) 
    { 
     // log socket failure 
     return false; 
    } 
    else 
    { 
    // log socket success 
    } 


    if (connect(cellModem,(const struct sockaddr*)&handHeld, sizeof(handHeld)) != 0) 
    { 
    // log socket connection success 
    } 
    else 
    { 
    // log socket connection failure 
    closesocket(cellModem); 
    } 
+0

我想我們需要看到更多的代碼... – 2012-08-24 07:45:28

回答

0

這聽起來像是該端口被其他東西打開?你能證實你沒有爭奪同一個港口嗎?