LINUX.ORG.RU

История изменений

Исправление cumvillain, (текущая версия) :

От этой очереди нет никакого толку потому что отправка сообщений сервером неблокирующая и нет никаких механизмов определить что очередь клиента переполнена. То есть нет возможности узнать убъёт ли соединение отправка очередного сообщения клиенту или нет.

Лолшто?

server: cannot write to socket: Resource temporarily unavailable

Развлекайся:

#include <err.h>
#include <stdio.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <unistd.h>

int
main(void)
{
	int ret;
	int sock;
	int csock;
	struct sockaddr_un sa = {0};
	static const char data[1024];

	sa.sun_family = AF_UNIX;
	snprintf(sa.sun_path, sizeof(sa.sun_path), "%s", "/tmp/uds.sock");

	sock = socket(AF_UNIX, SOCK_STREAM, 0);
	if (sock == -1)
		err(1, "cannot open socket");

	unlink(sa.sun_path);
	ret = bind(sock, (const struct sockaddr *)&sa, sizeof(sa));
	if (ret == -1)
		err(1, "cannot bind to %s", sa.sun_path);

	ret = listen(sock, 10);
	if (ret == -1)
		err(1, "cannot listen on %s", sa.sun_path);

	csock = accept4(sock, NULL, 0, SOCK_NONBLOCK);
	if (csock == -1)
		err(1, "cannot accept new connection");

	for (;;) {
		ret = write(csock, data, sizeof(data));
		if (ret == -1)
			warn("cannot write to socket");
	}

	return 0;
}

Исправление cumvillain, :

От этой очереди нет никакого толку потому что отправка сообщений сервером неблокирующая и нет никаких механизмов определить что очередь клиента переполнена. То есть нет возможности узнать убъёт ли соединение отправка очередного сообщения клиенту или нет.

Лолшто?

server: cannot write to socket: Resource temporarily unavailable

Развлекайся:

#include <err.h>
#include <stdio.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <unistd.h>

int
main(void)
{
	int ret;
	int sock;
	int csock;
	struct sockaddr_un sa;
	static const char data[1024];

	sa.sun_family = AF_UNIX;
	snprintf(sa.sun_path, sizeof(sa.sun_path), "%s", "/tmp/uds.sock");

	sock = socket(AF_UNIX, SOCK_STREAM, 0);
	if (sock == -1)
		err(1, "cannot open socket");

	unlink(sa.sun_path);
	ret = bind(sock, (const struct sockaddr *)&sa, sizeof(sa));
	if (ret == -1)
		err(1, "cannot bind to %s", sa.sun_path);

	ret = listen(sock, 10);
	if (ret == -1)
		err(1, "cannot listen on %s", sa.sun_path);

	csock = accept4(sock, NULL, 0, SOCK_NONBLOCK);
	if (csock == -1)
		err(1, "cannot accept new connection");

	for (;;) {
		ret = write(csock, data, sizeof(data));
		if (ret == -1)
			warn("cannot write to socket");
	}

	return 0;
}

Исправление cumvillain, :

От этой очереди нет никакого толку потому что отправка сообщений сервером неблокирующая и нет никаких механизмов определить что очередь клиента переполнена. То есть нет возможности узнать убъёт ли соединение отправка очередного сообщения клиенту или нет.

Лолшто?

server: cannot write to socket: Resource temporarily unavailable

Развлекайся:

#include <err.h>
#include <stdio.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <unistd.h>

int
main(void)
{
	int ret;
	int sock;
	int csock;
	struct sockaddr_un sa;
	static const char data[1024];

	sa.sun_family = AF_UNIX;
	snprintf(sa.sun_path, sizeof(sa.sun_path), "%s", "/tmp/uds.sock");

	sock = socket(AF_UNIX, SOCK_STREAM, 0);
	if (sock == -1)
		err(1, "cannot open socket");

	unlink(sa.sun_path);
	ret = bind(sock, (const struct sockaddr *)&sa, sizeof(sa));
	if (ret == -1)
		err(1, "cannot bind to %s", sa.sun_path);

	ret = listen(sock, 10);
	if (ret == -1)
		err(1, "cannot listen on %s", sa.sun_path);

	csock = accept4(sock, NULL, 0, SOCK_NONBLOCK);
	if (csock == -1)
		err(1, "cannot accept new connection");

	for (;;) {
		ret = write(csock, data, sizeof(data));
		if (ret == -1)
			warn("cannot write to socket");
	}

	return 0;
}

Исправление cumvillain, :

От этой очереди нет никакого толку потому что отправка сообщений сервером неблокирующая и нет никаких механизмов определить что очередь клиента переполнена. То есть нет возможности узнать убъёт ли соединение отправка очередного сообщения клиенту или нет.

Лолшто?

server: cannot write to socket: Resource temporarily unavailable

Развлекайся:

#include <err.h>
#include <stdio.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <unistd.h>

int
main(void)
{
	int ret;
	int sock;
	int csock;
	struct sockaddr_un sa;
	static const char data[1024];

	sa.sun_family = AF_UNIX;
	snprintf(sa.sun_path, sizeof(sa.sun_path), "%s", "/tmp/uds.sock");

	sock = socket(AF_UNIX, SOCK_STREAM, 0);
	if (sock == -1)
		err(1, "cannot open socket");

	unlink(sa.sun_path);
	ret = bind(sock, (const struct sockaddr *)&sa, sizeof(sa));
	if (ret == -1)
		err(1, "cannot bind to %s", sa.sun_path);

	ret = listen(sock, 10);
	if (ret == -1)
		err(1, "cannot listen on %s", sa.sun_path);

	csock = accept4(sock, NULL, 0, SOCK_NONBLOCK);
	if (csock == -1)
		err(1, "cannot accept new connection");

	for (;;) {
		ret = write(csock, data, sizeof(data));
		if (ret == -1)
			warn("failed to write to socket");
	}

	return 0;
}

Исправление cumvillain, :

От этой очереди нет никакого толку потому что отправка сообщений сервером неблокирующая и нет никаких механизмов определить что очередь клиента переполнена. То есть нет возможности узнать убъёт ли соединение отправка очередного сообщения клиенту или нет.

Лолшто?

server: cannot write to socket: Resource temporarily unavailable

Исходная версия cumvillain, :

От этой очереди нет никакого толку потому что отправка сообщений сервером неблокирующая и нет никаких механизмов определить что очередь клиента переполнена. То есть нет возможности узнать убъёт ли соединение отправка очередного сообщения клиенту или нет.

Лолшто?

server: failed to write to socket: Resource temporarily unavailable