Articles of sockets

Les sockets de domaine Unix 100x moins rapides sous Solaris 10 que sous Linux?

Je compare les performances des sockets locales sous Linux et Solaris pour un projet. Pour une raison quelconque, je ne peux pas savoir, les performances sous Solaris sont à peu près 100 fois plus faibles que sous Linux. Sous Linux, ouvrir un socket, échanger un message très court (2 caractères) et le fermer prend environ […]

Erreur d’envoi OS X UDP: 55 Pas d’espace tampon disponible

Pendant que j’implémentais RUDP dans python3.3 sur OSX10.9.1, j’ai remarqué que le code suivant ne fait pas ce qu’il fait sur linux: (peu importe la langue, le même comportement pour C, Java et C # / Mono) from socket import * udp = socket(AF_INET, SOCK_DGRAM) udp.setsockopt(SOL_SOCKET, SO_REUSEADDR, True) udp.bind((‘0.0.0.0’, 1337)) udp.setblocking(False) udp.setsockopt(SOL_IP, IP_TTL, 4) udp.connect((‘8.8.8.8’, […]

A quoi sert l’option socket SO_SNDLOWAT

Je porte actuellement un logiciel en C de Tru64 à Linux Suse 11. Sur Tru64, ils définissent la valeur de l’option SO_SNDLOWAT sur 1024 * 64 . Sous Linux, cette option n’est pas modifiable et sa valeur est 1. Je veux savoir quel sera l’impact de la non-mise à jour SO_SNDLOWAT sur 1024 * 64 […]

Socket select () fonctionne sous Windows et expire sous Linux

Je porte une application réseau Windows sur Linux et je fais face à un problème de délai avec select call sur Linux. La fonction suivante bloque pour toute la valeur du délai d’attente et retourne pendant que je vérifie avec un renifleur de paquets que le client a déjà envoyé les données. int recvTimeOutTCP( SOCKET […]

Déterminer le nombre actuel de connexions en attente dans la queue TCP listen ()

Est-il possible de trouver le nombre actuel de tentatives de connexion en attente de accept () sur un socket TCP sous Linux? Je suppose que je pourrais compter le nombre de accept () qui réussissent avant d’appuyer sur EWOULDBLOCK à chaque boucle d’événement, mais j’utilise une bibliothèque de haut niveau (Python / Twisted) qui cache […]

comment trouver quel processus lie un socket mais pas écouter?

Lorsque j’utilise nc pour écouter un port, cela montre nc -l -vv -p 21000 retrying local 0.0.0.0:21000 : Address already in use Can’t grab 0.0.0.0:21000 with bind Mais je ne trouve pas quelle tâche occupe ce port avec les outils netstat / ss netstat -an|grep 21000 rien ne trouve ss -a|grep 21000 rien ne trouve […]

Erreur “recherche illégale” lors de l’utilisation de stream socket avec des tampons de lecture non vides

J’écris actuellement une application serveur sous Linux x86_64 utilisant . Après avoir accepté une connexion via accept() , j’utilise fdopen() pour envelopper le socket récupéré dans un stream FILE* . En écrivant et en lisant, ce stream FILE* fonctionne généralement assez bien, mais le socket devient inutilisable dès que je lui écris alors qu’il dispose […]

Différence entre INADDR_ANY dans la programmation socket Linux et Windows

Mon application Delphi Winsock devrait écouter toutes les interfaces réseau pour le stream UDP / IP de multidiffusion. Il a écouté normalement jusqu’à ce que je l’ai essayé sur un autre PC avec l’ordre de priorité des différentes cartes réseau. Ensuite, j’ai commencé à rechercher des problèmes et à trouver sur certains forums que INADDR_ANY […]

La fonction sendto n’utilise pas l’adresse MAC fournie dans struct sockaddr_ll lors de l’envoi de paquets bruts

J’essaie d’envoyer un cadre Ethernet OAM en utilisant raw socket. J’ai réussi à le faire. La fonction d’envoi que j’ai écrite est la suivante: int send_frame(sock_info *info,char *buf,int length) { struct sockaddr_ll dest_addr; memset(&dest_addr,0,sizeof(struct sockaddr_ll)); dest_addr.sll_family = PF_PACKET; dest_addr.sll_protocol = htons(8902); dest_addr.sll_ifindex = info->if_index; dest_addr.sll_halen = ETH_MAC_ADDR_LEN; dest_addr.sll_pkttype = PACKET_OTHERHOST; dest_addr.sll_hatype = ARPHRD_ETHER; memset(dest_addr.sll_addr,0,8); dest_addr.sll_addr[0] […]

Comment envoyer un paquet UDP toutes les 1 ms?

Je dois écrire une application pour Linux qui enverra périodiquement un paquet UDP. Idéalement, la fréquence devrait être toutes les 1 ms et l’intervalle entre les paquets devrait être cohérent. J’ai essayé de le faire via les sockets habituels de cette façon: while(counter < 4294967295) { for (k=0; k<4; k++) //Convert counter value to string […]