mensajes UDP sencillo

Esta realización es un contenido de contenido de libros de revisión 1.4.4, el servidor principal y el cliente para lograr la separación.

programa de servidor:

. 1   estática  sin efecto la principal ( Cadena [] args)
 2          {
 3.              Int dataLength;
 . 4              Cadena tmpStr;
 . 5              byte [] = dataBytes1 nuevo nuevo  byte [ 1024 ];
 . 6              // especificado escucha inicio puerto 
. 7              la ranura = nuevo nuevo el zócalo (AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
 . 8              la IPEndPoint = myhost en nuevo nuevo la IPEndPoint (IPAddress.Any, 8080 );
 9.              // extremo puerto especificado de escucha 
10             EndPoint cliente1 = nuevo IPEndPoint (IPAddress.Any, 8080 ); 
11              socket.Bind (myhost);
12              , mientras que ( verdadero )
 13              {
 14                  Console.WriteLine ( " 等待接收... " );
15                  dataLength = socket.ReceiveFrom (dataBytes1, ref cliente1);
16                  tmpStr = System.Text.Encoding.Unicode.GetString (dataBytes1, 0 , dataLength);
17                  Console.WriteLine ($ " 接收到来自{client1.ToString ()}的信息: {} tmpStr" );
 18                  SI (tmpStr == " ServerOver " ) PAUSA ;
 19              }
 20              Socket.close ();
 21              Console.WriteLine ( " la otra parte ha pedido la salida del servidor, pulse la tecla Intro para terminar. " );
 22              Console.ReadLine ();
 23          }

El programa de cliente:

. 1  estática  sin efecto la principal ( Cadena [] args)
 2          {
 3.              Byte [] bytes de datos;
 . 4              la ranura = nuevo nuevo el zócalo (AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
 . 5              // transmisión iniciar especificar qué socket 
6              = myhost en el IPEndPoint nuevo nuevo la IPEndPoint (IPAddress.Any, 8081 );
 . 7              Socket.bind (myhost at);
 . 8              // send especificar qué extremos zócalo
 9              // servidor especificado comienza 
10              la IPEndPoint remoteIPEnd = nuevo nuevoEl IPEndPoint (IPAddress.Parse ( " 192.168.1.105 " ), 8080 );
 . 11              el EndPoint remoteHost = (el punto final) remoteIPEnd;
 12 es              // extremo servidor especificado 
13 es              Console.Write ( " transmisión de entrada información: " );
 14              Cadena tmpStr = Console .readline ();
 15              bytes de datos = System.Text.Encoding.Unicode.GetBytes (tmpStr);
 16              socket.SendTo (bytes de datos, dataBytes.Length, SocketFlags.None, remoteHost);
 . 17              el tiempo ( true )
 18 es              {
19                  Si (tmpStr == " salida " )
 20                  {
 21                      descanso ;
22                  }
 23                  Console.Write ( " 输入发送信息(salida退出): " );
24                  tmpStr = Console.ReadLine ();
25                  bytes de datos = System.Text.Encoding.Unicode.GetBytes (tmpStr);
26                  socket.SendTo (bytes de datos, RemoteHost);
27              }
 28              Socket.close ();
29              Console.WriteLine ( "Por otro lado se ha retirado, pulse la tecla Enter para terminar. " );
 30              Console.ReadLine ();
 31 es          }

Los resultados operativos incluyen:

 prueba de equipo diferente también pasó.

 Con base en esto, debería ser capaz de completar fácilmente la página P24 4 del sujeto.


 extendido:

Estamos aquí escrito, antes de combinar el conocimiento de la red, y luego pensar en cómo romper la traducción de direcciones de fuente restricciones unilaterales, para lograr la mensajería de PC a la red pública y la red?

Tip: máquinas de la red para enviar un mensaje, utilizando la tabla de conversión de dirección y el puerto de salida de la asociación, por lo que el servidor también se puede acceder al cliente.

Revisión de Código 1: programa envía un mensaje, las necesidades de los servidores IP y el puerto especificado por el usuario en tiempo de ejecución.

2 cambios de código: la máquina dentro de la red de transmisión y recepción, utilizando la misma IP y el puerto. Debe abrir complejo portuario de trabajo. Código: "socket.SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);"

Resultados Como se muestra:

 

 En el que el escritorio remoto utilizando una máquina pública, la máquina es correcta.

secuencia de ejecución la figura está en orden.

En este caso, la máquina dentro de la red también puede estar conectado a otras máquinas de la red y recibir mensajes:

 

Esta es también la teoría de la comunicación básica qq. 

Preguntas: ¿Cómo utilizar un servidor de red pública, construir una sala de chat simple?

 

Supongo que te gusta

Origin www.cnblogs.com/wanjinliu/p/12271043.html
Recomendado
Clasificación