csocketstcp

C socket program stuck at listen()


I am trying to learn socket programming in C and i was trying to setup a basic TCP connection between client and server however in my server.c my code is seemingly just stuck at listen(). It does not execute the next lines and it also doesnt return the error message.

#include<stdio.h>
#include<stdlib.h>
#include<arpa/inet.h>
#include<string.h>
#include<unistd.h>

int main(){
    char *ip="127.0.0.1";
    int port =5566;
    int server_sock,client_sock;
    struct sockaddr_in serveraddr,clientaddr;
    socklen_t addr_size;
    char buffer[1024];
    int n;
    server_sock=socket(AF_INET,SOCK_STREAM,0);
    if(server_sock<0){
        perror("[-]Socket error");
        exit(1);
    }
    printf("[+] TCP server socket created\n");

    memset(&serveraddr,'\0',sizeof(serveraddr));
    serveraddr.sin_family=AF_INET;
    serveraddr.sin_port=port;
    serveraddr.sin_addr.s_addr=inet_addr(ip);
    n=bind(server_sock,(struct sockaddr*)&serveraddr,sizeof(serveraddr));
    if(n<0){
        perror("[-]Bind error");
        exit(1);
    }
    printf("[+] TCP SOCKET BOUND to port %d\n",port);
    n=listen(server_sock,5);
    if(n<0){
        perror("listen error\n");exit(1);
    }
    printf("server listening");
    while(1){
        addr_size=sizeof(clientaddr);
        client_sock=accept(server_sock,(struct sockaddr*) &clientaddr,&addr_size);
        printf("[+]Client Connected.\n");
    }
    

}

This is my current server.c n=listen(server_sock,5); It doesn't execute past this line. In my client.c the code is similar however i am getting a bind erorr


Solution

  • "my code is seemingly just stuck at listen()" That's an illusion. It is not. Make sure there is a newline (\n) at the end of every message you print and run again.

    ā€“ Comment from n. m. could be an AI

    He is correct