Este exemplo demonstra apenas funções simples e o código não é rigoroso, mas apenas explica como o cliente pode implementar código simples conectando ao servidor.
O código testa o ambiente de compilação e corrida sob a ferramenta Eclipse integrada, como mostrado na figura abaixo:
Código do cliente echoclient.java:
pacote com.zhengzz.echo; importar java.io.bufferedreader; importar java.io.ioException; importar java.io.inputStreamReader; importar java.io.printwriter; importar java.net.socket; importar java.net.NENKNOWNOHOSTEXCECCECCENCENT; ECHOC {soquete privado; Ioexception e) {e.printStackTrace (); true); println (B.ReadLine ()); main (string [] args) {new echoc (). client ();Código Echoserver.java do servidor:
pacote com.zhengzz.echo; importar java.io.bufferedreader; importar java.io.ioException; importar java.io.inputStreamReader; importar java.io.printwriter; importar java.net.serversock ECHOS {private ServerSocket ServerSocket; Socket = ServerSocket.accept (); )); ("--->" + linest); gs) {new echos (). Server ();Meus resultados de depuração direta sob a ferramenta Eclipse são os seguintes:
Vamos dar uma olhada em um exemplo de comunicação de soquete Java no nível do Helloword. Processo de comunicação:
Inicie o lado do servidor e insira um loop morto para continuar ouvindo se existe uma solicitação de conexão para uma determinada porta. Em seguida, execute o lado do cliente, o cliente emite uma solicitação de conexão e o servidor ouve a solicitação e envia de volta uma mensagem de aceitação ao cliente. para outros pedidos em um loop morto. Depois que o cliente entrar na sequência, pressione Enter para enviar dados para o servidor. O servidor lê os dados e responde aos dados do cliente. Depois que a solicitação é processada desta vez, o thread iniciado desaparece. Se o cliente receber dados de retorno que não sejam "OK", ele enviará a solicitação de conexão novamente e enviará os dados e o servidor iniciará um thread novamente para que a conexão responda. . . O cliente sai até que os dados de retorno recebidos pelo cliente estejam "OK".
Código -fonte do servidor:
pacote com.defonds.socket.begin; Socket; servidor = novo servidor (); O cliente foi conectado ao Socket Client = ServerSocket.accept (); )); DataAinputStream input = new DataAinputStream (Socket.getInputStream ()); Data System.out "); // Envie uma linha inserida pela string do teclado S = new BufferredReader (new InputStreamReader (System.in)). ReadLine (); out.Writeutf (s); out.close (); input.close (); } Catch (Episódio EXC E) {System .out.println ("Servidor Exceção:" + E.GetMessage ()); Exceção e) {Socket = NULL;Código -fonte do cliente:
pacote com.defonds.socket.begin; Socket; ("O cliente inicia ..."); {// Crie um soquete de fluxo e conecte-o ao número da porta especificado no soquete do host especificado = novo soquete (ip_addr, porta); // Envie dados para o servidor DataOutputStream Out = new DataOutputStream (Socket.getOutputStream ()); ReadLine (); ".Equals (ret)) {System.out.println (" Cliente fechará a conexão "); Thread.sleep (500); quebra;} out.close (); input.close ();} catch (Exceção e ) {System.out.println ("Exceção do cliente:" + e.getMessage ()); ;NOTA: Quando o método de dados do fluxo de saída do soquete é o WriteUTF, o fluxo de entrada precisa usar o ReadUTF para ler dados relacionados. Caso contrário, uma exceção da Eofexception será lançada.