благодарит за ответ.
Я согласен, что это очень странно. Я не думаю, что этот код является проблемой. Он хорошо работает на другой платформе.
Вы можете найти код ниже:
/*Create the server */
int CreateServeur (unsigned short port, int *sock_srv, int nb_connect)
{
int l_ret = -1;
struct sockaddr_in l_srv_addr;
/* address initialisation */
printf("creation serveur port %i\n", port);
memset ((char*) &l_srv_addr,0, sizeof (struct sockaddr_in));
l_srv_addr.sin_family = PF_INET;
l_srv_addr.sin_port = port;
l_srv_addr.sin_addr.s_addr = htonl (INADDR_ANY);
/* main socket creation */
if ((*sock_srv = socket (PF_INET, SOCK_STREAM, 0)) <= 0)
{
printf("server socket creation error");
}
else
{
if (bind (*sock_srv, (struct sockaddr *) &l_srv_addr, sizeof (struct sockaddr_in)) == -1)
{
close (*sock_srv);
printf("bind socket error");
}
else
{
if (listen (*sock_srv, nb_connect) == ERROR)
{
close (*sock_srv);
printf("listen socket error");
}
else
{
l_ret = 0;
}
}
}
return (l_ret);
}
Эта функция не возвращает ошибку. Первый журнал (printf («create serveur port% i \ n», порт);) отображает хороший порт (5003), но подключение сервера к порту 35603 (netstat -a).
Если это не проблема с контентом, я не понимаю.
Узнайте о ntohs и ntohl и друзьях в вашем коде. – bmargulies
Тогда ваш код является проблемой ... он не является «безопасным для конечных пользователей» (не знаю, является ли это правильным английским термином) – deviantfan
Пожалуйста, покажите код, который устанавливает сокет. – nos