1. Conceitos básicos de rede
Primeiro, esclareça um conceito: programação de rede! = Programação do site, a programação de rede agora é geralmente chamada de programação TCP/IP.
2. Protocolo de comunicação de rede e interface
3. Ideia de camadas de protocolo de comunicação
4. Modelo de referência
V. Protocolo IP
O computador de todos tem um endereço IP exclusivo para que a mensagem de erro não seja transmitida ao se comunicar.
Um endereço IP é dividido em quatro segmentos por um ponto. O endereço IP dentro do computador é representado por quatro bytes. Um byte representa um segmento e o número máximo representado por cada byte pode atingir apenas 255.
Vi. Protocolo TCP e protocolo UDP
TCP e UDP estão localizados na mesma camada e são baseados na camada IP. Como os dois computadores têm endereços IP diferentes, os dois computadores podem ser distinguidos e podem conversar um com o outro. Geralmente, há duas maneiras de falar: a primeira é TCP e a segunda é UDP. O TCP é uma conexão confiável. O TCP é como fazer uma ligação. Você precisa ligar para a outra parte primeiro e esperar que a outra parte responda antes de continuar conversando com a outra parte. Ou seja, você deve confirmar que pode enviar a mensagem antes de enviar a mensagem. O TCP carrega qualquer coisa confiável. Enquanto uma conexão for estabelecida em duas máquinas, os dados enviados na máquina serão definitivamente transmitidos para a máquina da outra parte. O UDP é como enviar um telegrama e será feito se for enviado. Não importa se a outra parte o recebe ou não, portanto, o UDP não é confiável. Embora o TCP transmita dados de maneira confiável, ele é transmitido lentamente. O UDP transmite dados não confiáveis, mas são transmitidos rapidamente.
7. Programação do soquete
Geralmente, a programação de rede é chamada de programação de soquete e o soquete significa "soquete" em inglês.
Instale um soquete nos dois computadores e, em seguida, conecte as duas extremidades de um cabo aos soquetes dos dois computadores, para que os dois computadores possam estabelecer uma conexão. Este soquete é o soquete.
Como eles podem se comunicar, eu disse que você é meu servidor, mas, em um sentido lógico, devo enviar as coisas para você primeiro e depois você os manuseará e encaminhá -las. Então você chama isso de servidor. Mas, no sentido técnico, apenas o TCP dividirá o servidor e o cliente. Para o UDP, em sentido rigoroso, não há o chamado servidor e cliente. O soquete do servidor TCP é chamado ServerSocket e o soquete do cliente é chamado de soquete.
Quando dois computadores estão conectados um ao outro, você deve primeiro conhecer os endereços IP deles, mas fornecer apenas endereços IP não é suficiente. Você também deve ter o número da porta da conexão, ou seja, a qual aplicativo se conectar.
O número da porta é usado para distinguir diferentes aplicações em uma máquina. O número da porta ocupa 2 bytes dentro do computador. Existem até 65536 números de porta em uma máquina. Um aplicativo pode ocupar vários números de porta. Se o número da porta estiver ocupado por um aplicativo, outros aplicativos não poderão mais usar esse número da porta. Lembre -se, se o programa que escrevemos deve ocupar o número da porta, se desejar ocupar o número da porta acima de 1024, não ocupe o número da porta abaixo de 1024, porque o sistema pode ser requisitado a qualquer momento. O próprio número da porta é dividido na porta TCP e na porta UDP. A porta TCP 8888 e a porta UDP 8888 são duas portas completamente diferentes. Existem 65536 portas TCP e portas UDP.
8. Modelo de comunicação do soquete TCP
9. Exemplos de uso de soquete
ServerSocket
importar java.net. /* Ao criar um objeto ServerSocket, ele geralmente é atribuído um número de porta. O significado é usar qual número da porta o novo objeto ServerSocket deve usar e qual número da porta para ouvir a conexão do cliente. Portanto, o significado de especificar um número de porta é informar ao computador onde o objeto ServerSocket ouve a conexão do cliente. */ * O lado do servidor recebe as solicitações de conexão do cliente continuamente; portanto, a programação do lado do servidor geralmente é um loop morto e funciona sem parar. */ while (true) {soquete s = s.eCcept (); /*Ligue para o método Acep () no lado do servidor para aceitar o objeto de conexão do cliente. O método aceit () é um método de bloqueio. Eu tenho esperado tolamente se um cliente se candidata à conexão. Em seguida, o soquete do lado do servidor estabelece uma conexão com o soquete no cliente. * / /* Se o cliente pode se conectar ao lado do servidor depende se o lado do servidor aceita a solicitação de conexão do cliente. Se o cliente aceitar a solicitação de conexão, instale um soquete no lado do servidor para estabelecer uma conexão com o cliente através deste soquete e se comunicar. */ System.out.println ("um cliente conectado!"); /* Use o fluxo InputStream para receber informações enviadas do cliente e use o fluxo de dados DataAinputStream para processar as informações recebidas*/ DatainputStream dis = new DatainputStream (s.getInputStream ()); /* Use ReadUtf (o método lê todas as informações recebidas e as armazena na variável str para ler o método readutf () também é um método de bloqueio. Ele aguoladamente esperará que o cliente envie informações e depois lê as informações recebidas. Se o cliente não é chamado de efientmente. O programa do lado do servidor é bloqueado, para que o outro cliente não possa se conectar, se outro cliente deseja conectar-se ao método de aceitação () no lado do servidor. Seja capaz de ler as informações. Soquete do cliente
importar java.net. /*O cliente se aplica para conectar -se ao lado do servidor* / /*Após se conectar ao lado do servidor, você pode produzir informações para o lado do servidor e receber informações retornadas do lado do servidor e receber informações de saída de informações e receber informações de retorno. O princípio de entrada e saída do fluxo deve ser usado para processar as informações*//*Aqui está as informações de saída de saída do fluxo de saída para o lado do servidor*/ outputStream OS = s.getOutputStream (); DataOutputStream DOS = new DataOutputStream (OS); Thread.sleep (30000);/*O cliente dorme por 30 segundos antes de enviar informações ao servidor*/ dos.Writeutf ("Hello Server!"); }}O cliente solicita uma conexão com o servidor através da porta 6666. Depois que o servidor aceita a solicitação de conexão do cliente, ele instala um soquete no servidor e, em seguida, conecta esse soquete ao soquete do cliente, para que o servidor possa se comunicar com o cliente. Quando outro cliente se aplica a uma conexão, depois que o servidor a aceitar, outro soquete será instalado para se conectar ao soquete do cliente.