Если вы проанализируете тело вашего запроса, то заметите, что это не JSON, чтобы отправить JSON, вы должны закодировать его в свой запрос ajax от вашего объекта.
$("#add_user_button").click(function (event) {
event.preventDefault();
$.ajax({
type: "POST",
url: '/user/',
data:
JSON.stringify({ // <--here
'action': "addUser",
'username': $('#id_username').val(),
'password': $('#id_password').val(),
'groups': $('#id_groups').val()
})
,
contentType: 'application/json; charset=utf-8'
});
}
См. getsockname (2). Вы затем осматриваете структуру sockaddr для семейства.
Править: Как примечание стороны, его иногда полезный для запросов информации также, в этой информации о случае libc сокеты
Править:
Вы действительно не можете знать, не смотря он каждый раз. Это не может просто кэшироваться, поскольку число сокета может быть снова использовано путем закрытия и повторного открытия его. Я просто изучил код glibc, и кажется, что getsockname является просто syscall, который мог быть противен мудрый производительностью.
Но мое предложение состоит в том, чтобы использовать своего рода объектно-ориентированные понятия. Заставьте пользователя передать указатель на структуру, которую Вы ранее возвратили ему, т.е. сделали, чтобы он регистрировался/открывал сокеты в Вашем API. Затем можно кэшировать то, что Вы хотите о том сокете.
Почему не всегда отправляют в сетевом порядке байтов?
Если Вы управляете кодом клиента и сервера, у меня есть другое предложение, которое я использовал успешно в прошлом.
Имейте первые четыре байта своего сообщения быть известным целочисленным значением. Получатель может затем осмотреть первые четыре байта, чтобы видеть, соответствует ли он известному значению. Если это соответствует, то никакой свопинг байта не необходим.
Это сохраняет Вас от необходимости сделать свопинг байта, когда обе машины имеют тот же порядок байтов.