Its not the problem with the goto , its problem with the buffer . I made some small changes in your program and now its working fine.Just close the socket fd ( net ) .

Code:
#include<stdio.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<stdlib.h>
#include<netdb.h>


void simple_port_scanner();

int main()
{
        char ans;
        int choice;

        printf("***************WELCOME************* \n");

again:
        printf("\nPlease look at the menu and enter the corresponding choice\n");
        printf("\n");
        printf("1.Simple Port Scan   :\n");
        printf("2.Check you device name,net address and subnet mask\n");
        printf("3.Let's Sniff\n");
        printf("\n");
        scanf("%d",&choice);

        switch(choice)
        {
                case(1):
                        {
                                simple_port_scanner();
                                break;
                        }

                case(2):
                        {
                                printf("Choice 2\n");
                                break;
                        }
                case(3):
                        {
                                printf("Choice 3\n");
                                break;
                        }

        }
        printf("Do you wish to continue : ");
        getchar();
        scanf("%c",&ans);
        if(ans=='y')
        {
                goto again;
        }
        else
        {
                printf("exit");
                exit(1);
        }
        return 0;
}


void simple_port_scanner()
{
        char ip[17];

        int i,net,new;

        struct sockaddr_in sa;



        printf("Enter the ip : ");
        scanf("%s",ip);
        sa.sin_addr.s_addr=inet_addr(ip);
        for(i=1;i<20000;i++)
        {
                sa.sin_family=AF_INET;
                sa.sin_port=htons(i);
                net=socket(AF_INET,SOCK_STREAM,0);

                if((new=connect(net,(struct sockaddr *)&sa,sizeof(sa)))>=0)
                {
                        printf("%d is open\n",i);
                }
        }
        close(net);
        printf("now exit scanner\n");

}
But using goto is not a good practice . It is also suggest in kernighan and ritchie's C guide.