2015-04-03 62 views
-1

我有一個win32應用程序項目。但是當程序到達像 這樣的位置時,假設new_socket = accept(socket,(sockaddr *)& client,& c); 它卡住了。在這類腳本中,它使我無法使用任何其他按鈕,文件菜單等是任何能告訴我什麼是錯誤的以及如何修復它的人。SendMessage()到win32應用程序vC++

這是它卡住的功能:

void server(){ 
    WSADATA wsa; 
    SOCKET server_socket, client_socket; 
    struct sockaddr_in server, client; 
    int c, yes=1; 
    int sent_length = 1; 

    if (WSAStartup(MAKEWORD(2,2),&wsa) != 0) printf("Failed. Error Code : %d",WSAGetLastError()); 

    if((server_socket = socket(AF_INET , SOCK_STREAM , 0)) == INVALID_SOCKET){ 
     printf("Could not create socket : %d" , WSAGetLastError()); 
    } 

    server.sin_family = AF_INET; 
    server.sin_addr.s_addr = 0; 
    server.sin_port = htons(8080); 
    memset(&(server.sin_zero), '\0', 8); 

    bind(server_socket ,(struct sockaddr *)&server , sizeof(server)); 

    listen(server_socket, 3); 
    c = sizeof(struct sockaddr_in); 

    while(1){ 
     client_socket = accept(server_socket,(struct sockaddr *)&client, &c); 
     send(client_socket, "Hello, World", 13, 0); 
     } 

    WSACleanup(); 
} 
+0

標題和問題之間的隱藏鏈接在哪裏? – IInspectable 2015-04-03 16:26:15

回答

1

接受的是syncronous呼叫並沒有返回,直到客戶端連接。這個桅杆不能在GUI線程中使用。需要或在另一個線程中執行此調用或(最好)只使用異步API(AcceptEx)

+0

感謝您的回覆,但我想我想出了一個辦法,但現在有一個新的問題,我面臨着,你能告訴我如何通過網絡發送數據。我曾使用過send()函數,但它沒有奏效 – Wajid 2015-04-06 08:33:14

相關問題