2017-10-13 189 views
-3

我正在通过在它们之间建立套接字连接来在一个客户端和服务器之间执行这个简单的聊天应用程序。但它正在无限循环中。任何人都可以说,什么是错误,我已经做了...C中的服务器客户端聊天应用程序

客户端代码

int main(){ 

    int client_socket = socket(AF_INET,SOCK_STREAM,0); 
    struct sockaddr_in server_address; 
    server_address.sin_family = AF_INET; 
    server_address.sin_port = htons(9002); 
    server_address.sin_addr.s_addr = INADDR_ANY; 

    int connection_status = connect(client_socket, (struct sockaddr*) &server_address, sizeof(server_address)); 

    char server_response[256]; 
    while(1){ 
    read(client_socket, server_response, sizeof(server_response)); 
    printf("Server:%s\n",server_response); 
    printf("Client:"); 
    write(client_socket, server_response, sizeof(server_response)); 
    if(strncmp("exit",server_response,4)==0){ 
        printf("Server Exit Successful"); 
        break; 
      } 
    } 
    close(client_socket); 
    return 0; 
    } 

服务器代码

int main(){ 

    char server_message[256]; 

    int server_socket = socket(AF_INET,SOCK_STREAM,0); 

    struct sockaddr_in server_address; 
    server_address.sin_family=AF_INET; 
    server_address.sin_port=htons(9002); 
    server_address.sin_addr.s_addr=INADDR_ANY; 

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

    listen(server_socket,1); 

    int network_socket = accept(server_socket,NULL,NULL); 
    while(1){ 
      write(network_socket,server_message,sizeof(server_message)); 
      printf("Client:%s\n",server_message); 
      printf("Server:"); 
      read(network_socket,server_message,sizeof(server_message)); 
      if((strncmp(server_message,"exit",4))==0) 
      { 
        printf("Client Exit...\n"); 
        break; 
      } 
    } 
    close(server_socket); 

    return 0; 
    } 
+1

“*什么是错误*”是一个,你错过了显示相关的代码。因此,问题很可能会很快收到downvotes和结束... – alk

+0

鉴于可用的信息,没有。 –

+0

发布一些代码,请 –

回答

1

一个问题,我看到的是,你不给您的客户端需要连接到的地址。 INADDR_ANY不会奇迹般地定位正确的服务器IP地址。 这当然不会导致无限循环,但它会导致您的服务器永远监听它永远不会得到的连接,这可能看起来像一个无限循环。 您的客户端将进入无限循环,因为您的循环是无限的,并且在连接系统调用后您不检查错误。

相关问题