messagerie simple udp

Ce mode de réalisation est une révision du contenu 1.4.4 contenu du livre, le serveur principal et le client pour obtenir une séparation.

programme serveur:

. 1   statique  supprime le principal ( chaîne [] args)
 2          {
 3.              Int dataLength;
 . 4              cordes tmpStr;
 . 5              byte [] = dataBytes1 nouveau nouvel  octet [ 1024 ];
 . 6              // spécifié départ port d' écoute 
. 7              la châsse = nouveau nouveau la douille (AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
 . 8              la IPEndPoint = monhôte à nouveau nouveau le IPEndPoint (IPAddress.Any, 8080 );
 . 9              // spécifiée fin de port d'écoute 
10             EndPoint Client1 = nouveau IPEndPoint (IPAddress.Any, 8080 ); 
11              socket.Bind (monhôte);
12              tandis que ( vrai )
 13              {
 14                  Console.WriteLine ( " 等待接收... " );
15                  dataLength = socket.ReceiveFrom (dataBytes1, ref Client1);
16                  tmpStr = System.Text.Encoding.Unicode.GetString (dataBytes1, 0 , dataLength);
17                  Console.WriteLine ($ " 接收到来自{client1.ToString ()}的信息: {} tmpStr" );
 18                  IF (tmpStr == " ServerOver " ) PAUSE ;
 19              }
 20              Socket.close ();
 21              Console.WriteLine ( " l'autre partie a demandé à la sortie du serveur, appuyez sur la touche Entrée à la fin. " );
 22              Console.ReadLine ();
 23          }

Le programme client:

. 1  statique  supprime le principal ( chaîne [] args)
 2          {
 3.              Octets [] databytes;
 . 4              la châsse = nouveau nouveau la douille (AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
 . 5              // transmission commence spécifier quelle prise 
6              = monhôte au IPEndPoint nouveau nouveau le IPEndPoint (IPAddress.Any, 8081 );
 . 7              Socket.bind (monhôte at);
 . 8              // envoi spécifier les extrémités socket
 9              // serveur spécifié commence 
10              l'IPEndPoint remoteIPEnd = new newLe IPEndPoint (IPAddress.Parse ( " 192.168.1.105 " ), 8080 );
 . 11              Le point final remoteHost = (le point d' extrémité) remoteIPEnd;
 12 est              // côté serveur spécifié 
13 est              Console.Write ( " transmission d'entrée d'informations: " );
 14              cordes tmpStr = Console .readline ();
 15              databytes = System.Text.Encoding.Unicode.GetBytes (tmpStr);
 16              socket.SendTo (databytes, dataBytes.Length, SocketFlags.None, remoteHost)
 . 17              pendant ce temps ( true )
 18 est              {
19                  si (tmpStr == " sortie " )
 20                  {
 21                      break ;
22                  }
 23                  Console.Write ( " 输入发送信息(sortie退出): " );
24                  tmpStr = Console.ReadLine ();
25                  databytes = System.Text.Encoding.Unicode.GetBytes (tmpStr);
26                  socket.SendTo (databytes, RemoteHost);
27              }
 28              Socket.close ();
29              Console.WriteLine ( "L'autre côté a tiré, appuyez sur la touche Entrée pour terminer. " );
 30              Console.ReadLine ();
 31 est          }

Les résultats d'exploitation:

 Différents test de l'ordinateur a également adopté.

 Sur cette base, il devrait être en mesure de compléter facilement la page P24 4 du sujet.


 Extended:

Nous sommes écrit ici, avant que nous combinons la connaissance du réseau, puis réfléchir à la façon de briser la traduction d'adresse source unilatérale de restrictions, pour atteindre la messagerie pc réseau et réseau public?

Conseil: les machines du réseau d'envoyer un message, en utilisant l'adresse et une table de conversion de sortie d'association port, de sorte que le serveur peut également avoir accès au client.

Révision du Code 1: programme envoie un message, les besoins du serveur IP et le port spécifié par l'utilisateur au moment de l'exécution.

2 code change: la machine à l'intérieur de la transmission et la réception réseau, en utilisant la même adresse IP et le port. Vous devez ouvrir complexe portuaire au travail. Code: "socket.SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);"

Comme le montre les résultats:

 

 Le bureau à distance où l'aide d'une machine publique, la machine est juste.

ordre d'exécution figure est en ordre.

Dans ce cas, la machine au sein du réseau peut également être connecté à d'autres machines du réseau et recevoir des messages:

 

C'est aussi la théorie de la communication de base qq. 

Questions: Comment utiliser un serveur de réseau public, construire une chambre simple de chat?

 

Je suppose que tu aimes

Origine www.cnblogs.com/wanjinliu/p/12271043.html
conseillé
Classement