2010-03-17 6 views
1

Je viens de répondre problem with sockets in c# où dans mon exemple de code j'initialise mon socket en utilisant ProtocolType.IP comme c'est ce que j'ai toujours utilisé dans mon propre code, et il n'a jamais m'a causé des problèmes. Mais je vois de nombreux exemples spécifiant .Quelle est la différence entre l'utilisation de ProtocolType.IP et ProtocolType.Tcp

Je suppose, ce que je demande est, en utilisant ProtocolType.IP au lieu de ProtocolType.Tcp est quelque chose étant effectué différemment sous le capot que je devrais être au courant?

Répondre

1

Je suppose que ProtocolType.IP ouvre un socket « raw IP », en d'autres termes, il éjacule juste octets bruts sur la réseau en tant que paquets IP plutôt que de passer par les couches de protocole TCP ou UDP.

Contrairement à TCP, vous n'obtiendrez pas de livraison garantie de paquets, les paquets peuvent arriver en panne et/ou les paquets peuvent être dupliqués. TCP gère tout cela dans le cadre de son protocole.

Pour presque tous les buts je m'attendrais que vous devriez employer ProtocolType.Tcp ou ProtocolType.Udp à moins que vous fassiez quelque chose de mise en réseau de bas niveau écrivant votre propre protocole de transport.

+1

En fait c'est le cas, si je n'avais pas utilisé stream comme type de socket. IP et Stream seront toujours TCP/IP car les sockets stream nécessitent TCP. Au moins selon ma compréhension de la documentation de WinSock2. Cependant si j'avais utilisé quelque chose d'autre que le comportement du courant aurait été différent ou il serait tombé en raison d'une mauvaise combinaison. – Sekhat

0

vérifier ce lien: http://www.allinterview.com/showanswers/1447.html

TCP/IP est une suite de protocoles, signifie qu'il est la combinaison de protocoles qui sont liés à TCP et IP. TCP est un protocole de couche de transport tandis que IP est un protocole de couche réseau. TCP est un protocole de connexion et IP est une connexion moins protocole

Hope it helps

Questions connexes