1. Duas questões principais na programação de rede
Um é como localizar com precisão um ou mais hosts na rede, e o outro é como transmitir dados de maneira confiável e eficiente após encontrar o host.
No protocolo TCP/IP, a camada IP é principalmente responsável pela localização do host de rede e pelo roteamento da transmissão de dados. O endereço IP pode determinar exclusivamente um host na Internet.
A camada TCP fornece um mecanismo de transmissão de dados confiável (TCP) ou não confiável (UDP) para aplicação, que é o principal objeto da programação de rede e geralmente não precisa se preocupar com a forma como a camada IP processa dados.
O modelo de programação de rede mais popular no momento é a estrutura do cliente/servidor (s). Ou seja, uma das partes de comunicação atua como servidor para aguardar o cliente para enviar uma solicitação e responder. O cliente se aplica ao servidor quando o serviço é necessário. O servidor geralmente está sempre em execução como daemon, ouvindo a porta de rede. Depois que um cliente solicitar, ele iniciará um processo de serviço para responder ao cliente e, ao mesmo tempo, continuará ouvindo a própria porta de serviço para que os clientes posteriores também possam obter serviço em tempo hábil.
2. Dois tipos de protocolos de transmissão: TCP/UDP
TCP é a abreviação do protocolo de controle de transferência, um protocolo orientado a conexão que garante transmissão confiável. A transmissão através do protocolo TCP resulta em uma ordem de fluxos de dados sem erros. Uma conexão deve ser estabelecida entre os dois pares de soquetes do remetente e do receptor, a fim de se comunicar com base no protocolo TCP. Quando um soquete (geralmente um soquete do servidor) está esperando para estabelecer uma conexão, o outro soquete pode exigir uma conexão. Depois que esses dois soquetes estiverem conectados, eles podem executar a transmissão de dados de mão dupla e ambas as partes podem executar operações de envio ou recebimento.
UDP é a abreviação do protocolo de datagrama do usuário. É um protocolo sem conexão. Cada datagrama é uma informação independente, incluindo um endereço de origem ou destino completo. É transmitido ao destino na rede por qualquer caminho possível. Portanto, se pode chegar ao destino, a hora de chegar ao destino e a correção do conteúdo não podem ser garantidos.
Comparar:
UDP:
1. Cada datagrama fornece informações completas para o endereço, portanto, não há necessidade de estabelecer uma conexão entre o remetente e o receptor.
2. Existe um limite de tamanho quando o DP transmite dados e cada datagrama transmitido deve ser limitado a 64 KB.
3. O DP é um protocolo não confiável, e os datagramas enviados pelo remetente não chegam necessariamente ao receptor na mesma ordem.
TCP:
1. Para conectar -se ao protocolo de conexão, uma conexão deve ser estabelecida antes da transmissão de dados entre os soquetes, para que o tempo de conexão seja necessário no TCP.
2. Limite de tamanho dos dados de transmissão de CP. Depois que a conexão é estabelecida, os soquetes de ambas as partes podem transmitir grandes dados em um formato unificado.
3.CP é um protocolo confiável que garante que o receptor obtenha completamente todos os dados enviados pelo remetente.
aplicativo:
1. O TCP tem vitalidade extremamente forte na comunicação de rede. Por exemplo, a conexão remota (telnet) e a transferência de arquivos (FTP) requerem dados de comprimentos variados para serem transmitidos de forma confiável. No entanto, a transmissão confiável tem um custo. A verificação da correção do conteúdo de dados ocupará inevitavelmente o tempo de processamento e a largura de banda de rede do computador. Portanto, a eficiência da transmissão TCP não é tão alta quanto a do UDP.
2. O UDP é simples de operar e requer apenas menos supervisão, por isso geralmente é usado em aplicativos de cliente/servidor em sistemas distribuídos com alta confiabilidade em LANs. Por exemplo, os sistemas de videoconferência não exigem a correção absoluta dos dados de áudio e vídeo, desde que a consistência seja garantida, é obviamente mais razoável usar UDP neste caso.
3. Programação de rede Java baseada em soquete
1. É um soquete
Dois programas na rede realizam a troca de dados através de uma conexão de comunicação bidirecional. Uma extremidade deste link de mão dupla é chamada de soquete. O soquete é geralmente usado para conectar -se entre clientes e provedores de serviços. O soquete é uma interface de programação muito popular do protocolo TCP/IP. Um soquete é determinado exclusivamente por um endereço IP e um número de porta.
No entanto, os tipos de protocolos suportados pelo soquete não são apenas TCP/IP; portanto, não há conexão necessária entre os dois. No ambiente Java, a programação do soquete refere -se principalmente à programação de rede com base no protocolo TCP/IP.
2. O processo de comunicação de oCoque
O servidor ouve (ouve) se existe uma solicitação de conexão em uma determinada porta. O lado do cliente emite uma solicitação de conexão para o lado do servidor e o lado do servidor envia uma mensagem de aceitação de volta ao lado do cliente. Uma conexão é estabelecida. O servidor e o lado do cliente podem se comunicar entre si por meio de envio, gravação e outros métodos.
Para um soquete totalmente funcional, ele deve incluir a seguinte estrutura básica, e seu processo de trabalho inclui as quatro etapas básicas a seguir:
(1) criar soquete;
(2) abra a entrada/saída conectada ao soquete;
(3) Leia/Escreva o soquete de acordo com um determinado protocolo;
(4) Feche o soquete.
3. Construa o soquete
Crie soquete
O Java fornece duas classes soquetes e servidores no pacote java.net, que são usados para representar o cliente e o servidor para conexão bidirecional. Estas são duas classes muito bem embaladas e são muito fáceis de usar. O método de construção é o seguinte:
Soquete (endereço inetaddress, porta int);
Soquete (endereço inetaddress, porta int, fluxo booleano);
Soquete (host de string, int prot);
Socket (host de string, int prot, fluxo booleano);
Socket (SocketImpl Impl)
SOCKET (String Host, Int Port, InetAddress LocalAddr, Int Localport)
SOCKET (Endereço Inetaddress, Int Port, Inetaddress LocalAddr, Int Localport)
Serversocket (porta int);
ServerSocket (porta int, int backlog);
Serversocket (porta int, backlog int, inetaddress bindaddr)
O endereço, o host e a porta são o endereço IP, o nome do host e o número da outra parte na conexão bidirecional, respectivamente. O fluxo indica se o soquete é um soquete de fluxo ou um soquete de datagrama. Localport indica o número da porta do host local. LocalAddr e Bindaddr são o endereço da máquina local (o endereço do host do ServerSocket). Impl é a classe pai do soquete. Ele pode ser usado para criar o ServerSocket e criar soquetes. A contagem representa o número máximo de conexões que o servidor pode suportar. Por exemplo:
Cliente de soquete = novo soquete ("127.0.0.1", 8888);
ServerSocket Server = new ServerSocket (8888);
Observe que você deve ter cuidado ao selecionar uma porta. Cada porta fornece um serviço específico. Somente fornecendo a porta correta, o serviço correspondente pode ser obtido. Os números da porta de 0 ~ 1023 são reservados pelo sistema. Por exemplo, o número da porta do serviço HTTP é 80, o número da porta do serviço Telnet é 21 e o número da porta do serviço FTP é 23. Portanto, quando selecionamos o número da porta, é melhor escolher um número maior que 1023 para evitar conflitos.
Se ocorrer um erro ao criar um soquete, uma IoException será gerada e deve ser processada no programa. Portanto, ao criar um soquete ou servidor, é necessário capturar ou lançar uma exceção.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.