не работают сокеты

Модератор: Модераторы разделов

Аватара пользователя
kosmonaFFFt
Сообщения: 183
ОС: win 7, Kubuntu 10.10

не работают сокеты

Сообщение kosmonaFFFt »

Доброго всем времени суток, пытаюсь передать через сокеты число из одного процесса в
другой, вот исходники:

Сервер:

Код: Выделить всё

#include <iostream>
#include <string>
#include <sys/socket.h>
#include <sys/un.h>


int main(int argc, char * * argv)
{
  std::cout << "Socket file name = [./../s]" << std::endl;
  std::string std_socket_file_name;
  std::cin >> std_socket_file_name;

  //Create socket.
  int server_socket = socket(PF_LOCAL, SOCK_STREAM, 0);

  //Bind socket.
  struct sockaddr_un server_socket_name;
  server_socket_name.sun_family = AF_LOCAL;
  strcpy(server_socket_name.sun_path, std_socket_file_name.c_str());
  bind(server_socket, (const struct sockaddr *)(&server_socket_name), SUN_LEN(&server_socket_name));
  listen(server_socket, 1);

  //Wait client connections.
  struct sockaddr_un client_socket_name;
  socklen_t client_socket_name_len;
  int client_socket = accept(server_socket, (__SOCKADDR_ARG)(&client_socket_name), &client_socket_name_len);
  std::cout << client_socket;

  //Read number size.
  int fib_number;
  read(client_socket, &fib_number, sizeof(fib_number));
  std::cout << "Fibonacci number = " << fib_number << std::endl;

  //Close socket.
  close(client_socket);
  close(server_socket);
  unlink(std_socket_file_name.c_str());

  return 0;
}


Клиент:

Код: Выделить всё

#include <iostream>
#include <string>
#include <sys/socket.h>
#include <sys/un.h>

int main(int argc, char * * argv)
{
  std::cout << "Socket file name = [./../s]" << std::endl;
  std::string std_socket_file_name;
  std::cin >> std_socket_file_name;

  //Try create socket.
  int client_socket = socket(PF_LOCAL, SOCK_STREAM, 0);

  //Try connect to server.
  struct sockaddr_un server_socket_name;
  server_socket_name.sun_family = PF_LOCAL;
  strcpy(server_socket_name.sun_path, std_socket_file_name.c_str());
  connect(client_socket, (struct sockaddr *)(&server_socket_name), SUN_LEN(&server_socket_name));

  int fib_number = 0;
  std::cout << "Fibonacchi number = ";
  std::cin >> fib_number;

  write(client_socket, &fib_number, sizeof(fib_number));

  //Close socket.
  close(client_socket);

  return 0;
}


При запуске сервер ждет подключения клиента, но функция accept всегда возващает -1.
В чем проблема не могу понять, ибо есть почти такая же рабочая пара клиент-сервер, откуда я и копировал
работу с сокетами (там только не число передается, а матрицы).

Помогите плс найти зацепку в чем может быть косяк.
Заранее спасибо
Спасибо сказали:
Аватара пользователя
Женя Подсыпальников
Сообщения: 482

Re: не работают сокеты

Сообщение Женя Подсыпальников »

А errno - опосля бинтовки и приёму глянь :)
Пойдём на рыбалку !
Спасибо сказали: