Tout d'abord, permettez-moi de déclarer que je ne peux pas répondre à votre question. Si vous travaillez sur Internet, sachez qu'une simple question de savoir pourquoi -1 est renvoyé n'est peut-être pas une bonne question.
Deuxièmement, essayez de répondre à vos autres questions, et au passage, laissez-moi partager mon point de vue personnel.
Lorsque j'ai rejoint une start-up créant des applications sociales au cours de la Nième année, j'utilisais POSIX et prenais en charge les systèmes iOS3.1.3~iOS4. Notre responsable m'a demandé de changer de messagerie instantanée sur iOS et Android. Il y a eu de nombreux problèmes de déconnexion, de recyclage, de gel, de mémoire et de threads... Afin d'être multiplateforme, j'ai choisi le développement POSIX comme premier choix. est apparu au cours du processus, et l'information était que je fais souvent des heures supplémentaires la nuit pour communiquer et apprendre du serveur. L'ensemble du code du serveur a été accumulé après cinq ou six ans de dizaines de millions de tests en ligne. Cependant, je ne m'y suis toujours pas tenu et j'ai finalement choisi CFNetwork. Plus tard, plusieurs bugs sont survenus en raison des mises à niveau iOS, et j'ai ensuite utilisé GCDAsyncSocket jusqu'à présent. Plus tard, nous avons également développé des protocoles audio et vidéo, les clients ont construit leurs propres serveurs, etc., mais aucun d'entre eux n'a utilisé POSIX.
Je veux juste dire que vous devriez réfléchir attentivement aux raisons pour lesquelles vous devriez utiliser POSIX, multiplateforme ? Protocole personnalisé ? Dans le cas contraire, il est fortement recommandé de choisir une API plus avancée ou d’utiliser une bibliothèque tierce mature.
POSIX sous iOS a toujours eu beaucoup d'embûches. Cela nécessite une expérience suffisante, une familiarité avec les documents Apple et la nécessité de suivre les mises à jour du système et d'effectuer des tests. Parce que choisir POSIX signifie gérer l'IP par vous-même, prendre en charge IPv4/IPv6/IPv6 uniquement, gérer la commutation Wifi/WWAN, l'accessibilité IP, le VPN, la sécurité des threads, la mémoire, diverses anomalies de réseau, certaines "morts suspendues" magiques du réseau, etc. Attendez. .. iOS rendra https obligatoire l'année prochaine et vous devrez mettre à jour en conséquence.
Il est nécessaire de lire une ou deux fois la documentation officielle de programmation réseau d’Apple. Quant à la bibliothèque de sockets que vous souhaitez, j'ai vu il y a longtemps plusieurs projets de portage prenant en charge iOS. Ils ne sont peut-être plus maintenus maintenant. J'ai oublié le nom. Vous pouvez la rechercher sur les sites Web d'hébergement de code open source et les groupes Google. J'ai récemment testé quelque chose et joué à segmentfault pendant quelques jours. D'après mon observation actuelle, vous ne pouvez pas trouver ici les réponses aux questions que vous rencontrerez maintenant et à l'avenir, et vous ne pourrez peut-être pas les trouver sur stackoverflow. . La façon d'apprendre et de résoudre des problèmes consiste à examiner le code des autres. Le code open source d'Apple est un trésor.
Peut-être que ce que j'ai dit est sérieux, ou peut-être que la fonction que vous souhaitez n'est pas aussi compliquée que je le pensais. Encore une fois, à moins que vous deviez multiplateforme ou implémenter un protocole personnalisé et que vous ayez suffisamment de temps pour remplir les trous, puis jouez avec POSIX, sinon choisissez une API avancée ou une bibliothèque tierce.
Tout d'abord, permettez-moi de déclarer que je ne peux pas répondre à votre question. Si vous travaillez sur Internet, sachez qu'une simple question de savoir pourquoi -1 est renvoyé n'est peut-être pas une bonne question.
Deuxièmement, essayez de répondre à vos autres questions, et au passage, laissez-moi partager mon point de vue personnel.
Lorsque j'ai rejoint une start-up créant des applications sociales au cours de la Nième année, j'utilisais POSIX et prenais en charge les systèmes iOS3.1.3~iOS4. Notre responsable m'a demandé de changer de messagerie instantanée sur iOS et Android. Il y a eu de nombreux problèmes de déconnexion, de recyclage, de gel, de mémoire et de threads... Afin d'être multiplateforme, j'ai choisi le développement POSIX comme premier choix. est apparu au cours du processus, et l'information était que je fais souvent des heures supplémentaires la nuit pour communiquer et apprendre du serveur. L'ensemble du code du serveur a été accumulé après cinq ou six ans de dizaines de millions de tests en ligne. Cependant, je ne m'y suis toujours pas tenu et j'ai finalement choisi CFNetwork. Plus tard, plusieurs bugs sont survenus en raison des mises à niveau iOS, et j'ai ensuite utilisé GCDAsyncSocket jusqu'à présent. Plus tard, nous avons également développé des protocoles audio et vidéo, les clients ont construit leurs propres serveurs, etc., mais aucun d'entre eux n'a utilisé POSIX.
Je veux juste dire que vous devriez réfléchir attentivement aux raisons pour lesquelles vous devriez utiliser POSIX, multiplateforme ? Protocole personnalisé ? Dans le cas contraire, il est fortement recommandé de choisir une API plus avancée ou d’utiliser une bibliothèque tierce mature.
POSIX sous iOS a toujours eu beaucoup d'embûches. Cela nécessite une expérience suffisante, une familiarité avec les documents Apple et la nécessité de suivre les mises à jour du système et d'effectuer des tests. Parce que choisir POSIX signifie gérer l'IP par vous-même, prendre en charge IPv4/IPv6/IPv6 uniquement, gérer la commutation Wifi/WWAN, l'accessibilité IP, le VPN, la sécurité des threads, la mémoire, diverses anomalies de réseau, certaines "morts suspendues" magiques du réseau, etc. Attendez. .. iOS rendra https obligatoire l'année prochaine et vous devrez mettre à jour en conséquence.
Il est nécessaire de lire une ou deux fois la documentation officielle de programmation réseau d’Apple. Quant à la bibliothèque de sockets que vous souhaitez, j'ai vu il y a longtemps plusieurs projets de portage prenant en charge iOS. Ils ne sont peut-être plus maintenus maintenant. J'ai oublié le nom. Vous pouvez la rechercher sur les sites Web d'hébergement de code open source et les groupes Google. J'ai récemment testé quelque chose et joué à segmentfault pendant quelques jours. D'après mon observation actuelle, vous ne pouvez pas trouver ici les réponses aux questions que vous rencontrerez maintenant et à l'avenir, et vous ne pourrez peut-être pas les trouver sur stackoverflow. . La façon d'apprendre et de résoudre des problèmes consiste à examiner le code des autres. Le code open source d'Apple est un trésor.
Peut-être que ce que j'ai dit est sérieux, ou peut-être que la fonction que vous souhaitez n'est pas aussi compliquée que je le pensais. Encore une fois, à moins que vous deviez multiplateforme ou implémenter un protocole personnalisé et que vous ayez suffisamment de temps pour remplir les trous, puis jouez avec POSIX, sinon choisissez une API avancée ou une bibliothèque tierce.
Rappel amical : chérissez la vie.
Après l'écriture renvoie -1, veuillez utiliser
errno
pour obtenir le code d'erreur