The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"клиент - сервер"
Отправлено Silence, 13-Дек-05 03:02 
Народ помогите...обычная програмка клиента и сервера.Клиент посылает серверу сообщение "Здравствуй мир".При запуске программы клиента выдает :"Ошибка передачи сообщения".Еще такой вопрос:"Сначала нужно запускать программу сервера а потом программу клиента?или наоборот".


Сервер

#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
#define MAXBUF 256

char buf [MAXBUF];

main()
{
    struct sockaddr_un serv_addr, clnt_addr;
    int sockfd;
    int saddrlen,caddrlen,max_caddrlen,n;
    if((sockfd = socket(AF_UNIX, SOCK_DGRAM,0)) < 0)
    {
        printf("Невозможно создать сокет‚\n");
        exit(1);
    }
    unlink("./new/7/serv");
    bzero(&serv_addr,sizeof(serv_addr));
    serv_addr.sun_family = AF_UNIX;
    strcpy(serv_addr.sun_path,"./new/7/serv");
    saddrlen = sizeof(serv_addr.sun_family) + strlen(serv_addr.sun_path);
    if(bind(sockfd,(struct sockaddr *)&serv_addr, saddrlen) < 0)
    {
        printf("Ошибка связывания сокета\n");
        exit(1);
    }
    max_caddrlen = sizeof(clnt_addr);
        for( ; ; )
    {
        caddrlen = max_caddrlen;
        n = recvfrom(sockfd, buf, MAXBUF, 0, (struct sockaddr*)&clnt_addr, &caddrlen);
        if(n < 0)
        {
            printf("Ошибка приема\n");
            exit(1);
        }
        if(sendto(sockfd, buf, n, 0, (struct sockaddr*)&clnt_addr,caddrlen) != n)
        {
            printf("Ошибка передачи\n");
            exit(1);
        }
    }
}


Клиент

#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>

char *msg = "Зравствуй мир! \n";
#define MAXBUF 256

char buf[MAXBUF];
main()
{
    struct sockaddr_un  serv_addr , clnt_addr;
    int sockfd;
    int saddrlen, caddrlen, msglen,n;
    bzero(&serv_addr, sizeof(serv_addr));
    serv_addr.sun_family = AF_UNIX;
    strcpy(serv_addr.sun_path, "./new/7/serv");
    saddrlen = sizeof(serv_addr.sun_family) + strlen(serv_addr.sun_path);
    if((sockfd = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0)
    {
        printf("Невозможно создать сокет‚ \n");
        exit(1);
    }
    bzero(&clnt_addr, sizeof(clnt_addr));
    clnt_addr.sun_family = AF_UNIX;
    strcpy(clnt_addr.sun_path, "/new/7/client");
    mktemp(clnt_addr.sun_path);
    caddrlen = sizeof(clnt_addr.sun_family) + strlen(clnt_addr.sun_path);
    if(bind(sockfd,(struct sockaddr*)&clnt_addr,caddrlen) < 0)
    {
        printf("Ошибка связывания сокета\n");
        exit(1);
    }
    if(sendto(sockfd, msg, msglen, 0,(struct sockaddr*)&serv_addr,saddrlen) != msglen)
    {
        printf("Ошибка передачи сообщения\n");
        exit(1);
    }
    if((n = recvfrom(sockfd, buf, MAXBUF,0,NULL,0)) < 0)
    {
        printf("Ошибка получения сообщения\n");
        exit(1);
    }
    printf("Эхо: %s\n", buf);
    close(sockfd);
    unlink(clnt_addr.sun_path);
    exit(0);
}

И еще меня интересует какой путь нужно устанавливать в этих строчках?

unlink("./new/7/serv");
strcpy(serv_addr.sun_path,"./new/7/serv");
strcpy(serv_addr.sun_path, "./new/7/serv")
strcpy(clnt_addr.sun_path, "/new/7/client");
strcpy(clnt_addr.sun_path, "/new/7/client");
Возможно из-за этого и выдается ошибка.

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру