Socket de Programmation en C(Client Serveur Exemple)

Je suis totalement nouveau dans la programmation sous unix et ont écrit le code suivant pour le client et le serveur de programmation. Lorsque j'essaie d'exécuter le code client, il dit: "Connexion refusée". Quelqu'un pourrait s'il vous plaît dites-moi ce que pourrait être la raison de cela.

Code Serveur :

#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/socket.h>
#include <errno.h>
#include<string.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main(void)
{
    int sockid,newsockid;
    socklen_t addr_size;
    char *msg="What a beautiful morning!";
    int len, bytes_sent;
    sockid=socket(AF_INET,SOCK_STREAM,0);
    if(sockid==-1)
    {
        perror("socket");
        exit(1);
    }
    else
        printf("created");
    struct sockaddr_in serveraddr,clientaddr;
    bzero((char *)&serveraddr,sizeof(serveraddr));
    serveraddr.sin_family=AF_INET;
    serveraddr.sin_port=htons(7400);
    serveraddr.sin_addr.s_addr=INADDR_ANY;

    if(bind(sockid,(struct sockaddr *)&serveraddr,sizeof(serveraddr))<0)
    {
        perror("bind");
        return -1;
    }

    listen(sockid,5);
    addr_size=sizeof(clientaddr);
    newsockid=accept(sockid,(struct sockaddr *)&clientaddr,&addr_size);
    len = strlen(msg);
    bytes_sent = send(sockid, msg, len, 0);
    close(sockid);
}

Code Client :

#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/socket.h>
#include <errno.h>
#include<string.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main(void)
{
    int byte_count;
    struct sockaddr_in serveraddr;
    char *servername;
    char buf[256];
    socklen_t addr_size;
    int sockfd;

    sockfd=socket(AF_INET,SOCK_STREAM,0);
    bzero(&serveraddr,sizeof(serveraddr));
    serveraddr.sin_family=AF_INET;
    serveraddr.sin_port=htons(11378);
    servername=gethostbyname("localhost");
    inet_pton(AF_INET,servername,&serveraddr.sin_addr);

    addr_size=sizeof(serveraddr);
    if(connect(sockfd,(struct sockaddr *)&serveraddr,addr_size)==-1)
    {
        perror("connect");
        exit(1);
    }

    byte_count = recv(sockfd, buf, sizeof buf, 0);
    printf("recv()'d %d bytes of data in buf\n", byte_count);

    close(sockfd);
}

Un début d'aide serait appréciée.
Merci.

Connection refused signifie "aucun de ces numéro de téléphone, le numéro que vous avez composé est inconnu" en termes de ip-adresse et/ou numéro-port.
Vérifiez comment servername est initialisé. Et: Ne compiler avec tous les avertissements sur (-Wall -Wextra -pedantic pour gc), puis sur fix le code jusqu'à ce que pas plus de mises en garde pop-up!
j'ai fait quelques changements.. annuler les changements de port. Est-il autre chose que je dois faire?
Il y a un problème conceptuel: L'appel du client à recv() pourrait bloquer comme sa en essayant de recevoir plus que ce que le serveur va envoyer.
"Un début d'aide serait appréciée": je pourrais vous envoyer mon taux horaire, si vous êtes intéressé.

OriginalL'auteur user2725511 | 2013-08-28