2014-01-09 92 views
0
typedef unsigned int uint16; 
SOCKET s, new_socket; 
uint16 port =18001; 

    void CreateSocket() 
    { 
      WSADATA wsa; 
      struct sockaddr_in server; // creating a socket address structure: structure contains ip address and port number 


       printf("Initializing Winsock\n"); 
      if(WSAStartup(MAKEWORD(2,2), &wsa)!=0) 
      { 
       printf("Failed Error Code: %d", WSAGetLastError()); 
       return -1; 
      } 
      printf("Initialised\n"); 


      //CREATING a SOCKET 

      if ((s = socket(AF_INET, SOCK_STREAM, 0)) == -1) 
      { 
       printf("Could not Create Socket\n"); 
       //return 0; 
      } 
      printf("Socket Created\n"); 

      server.sin_addr.s_addr = inet_addr("192.168.0.1"); 
      server.sin_family = AF_INET;  
      server.sin_port = htons(port); 
//Binding between the socket and ip address 

    if(bind (s, (struct sockaddr *) &server, sizeof(server)) == SOCKET_ERROR) 
    { 
     printf("Bind failed with error code: %d", WSAGetLastError()); 
    } 
    puts("Bind Done"); 


    //Listen to incoming connections 
    listen(s, 3); 


    //Accepting the incoming connection 
     new_socket = accept(s, NULL, NULL); 

     if (new_socket == INVALID_SOCKET) 
     { 
    printf(L"accept failed with error: %ld\n", WSAGetLastError()); 
    closesocket(new_socket); 
    WSACleanup(); 
    return 1; 
} 
     else 
    printf("Client connected.\n"); 

closesocket(s);如何檢查TCP層上的套接字是否處於活動狀態?

 } 

int main() 
{ 
CreateSocket(); 

return 0; 
} 

這是用於TCP的。 我通過上面的IP地址和端口號從MASTER接收連接,所以我創建了一個帶有端口號和IP地址的套接字。但如何檢查插座是否處於活動狀態?如何檢查上面的套接字代碼是否有效(它沒有顯示任何錯誤)。我在MASTER端得到一個錯誤,說: CONNECT EVENT CHECK FAILED(WSAGetLastError()) 任何人都可以幫助我?

回答

1

你的套接字和地址之間沒有連接,你從來沒有bind()地址server到套接字s

這當然是你的客戶端無法連接的原因,因爲套接字不會使用預期的端口。我假設你在其他地方調用accept()等,實際上使套接字也接受傳入的連接。

+0

非常感謝您的回覆。我明白缺失的部分。但如果我正在接受來自客戶端的連接(主設備:我正在使用稱爲INCA的工具將連接命令發送到服務器)。那接受電話會是什麼? (因爲我沒有在客戶端上創建套接字) – user3169825

+0

點擊上面的accept()並閱讀文檔。服務器軟件需要告訴套接字層,傳入連接將在其套接字上被接受。 – unwind

+0

我在上面的程序中編輯並添加了accept,bind和listen代碼。然後,客戶端也無法連接。你可以幫我嗎 ?? – user3169825

相關問題