другой, вот исходники:
Сервер:
Код: Выделить всё
#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.
В чем проблема не могу понять, ибо есть почти такая же рабочая пара клиент-сервер, откуда я и копировал
работу с сокетами (там только не число передается, а матрицы).
Помогите плс найти зацепку в чем может быть косяк.
Заранее спасибо