Ideias para desenvolver um messenger

estou criando um chat, preciso pegar a porta passada pelo usuário (configuração do servidor).
até onde eu sei vai de 0 a 65535, o char se encaixa bem nesse ponto, ja que pelo que eu descobri é o unico tipo unsigned.
porém… e se a máquina for 64bits (jvm), e se a arquitetura for 64bits? vai mudar a quantidade de portas? seria melhor eu receber um string, fazer o cast e inserir uma validação condicional?
gostaria da ajuda de vocês. é um aplicativo pra portifólio.

o servidor recebe do cliente a mensagem, o id do destinatario e do cliente.

para as configurações… devo usar xml ou existe alternativa?

pensei em criar uma pasta lib na pasta do projeto, igual é feito no netbeans automáticamente. como configurar essa pasta no eclipse?

Trabalhe com o SocketChannel e com ByteBuffer, classes do java.nio.
Eu fiz uma classe para ela, chamada ByteBufferWorker que é capaz de converter tipos maiores nos seus respectivos tipos unsigned, desde que os valores respeitem a faixa de valores do tipo que você quiser converter, lógico.
Por exemplo, vc cria no java um int com o valor 60.000 e envia pede para a classe envia-lo como um UnsignedShort. A classe está aqui: http://www.guj.com.br/java/48335-c-e-java-arquivos#253015
Ela também faz o inverso. Você pode ler um unsigned short e ela automaticamente converterá o dado lido para um unsigned int, com o valor que tinha dentro daquele unsigned.

Agora, o usuário vai enviar a porta para que? Iniciar uma transmissão de arquivos?
É importante que você defina bem seu protocolo.

Para as configurações, existem as alternativas de xml, json, arquivos textos de propriedades ou mesmo de serializar arquivos. Existem APIs que serializam objetos em XML, como é o caso da castor.

Ah, e isso não é assunto de java básico. Por isso movi seu tópico para Java Avançado. Outra opção seria desenvolvimento web.

[quote=ViniGodoy]Trabalhe com o SocketChannel e com ByteBuffer, classes do java.nio.
Eu fiz uma classe para ela, chamada ByteBufferWorker que é capaz de converter tipos maiores nos seus respectivos tipos unsigned, desde que os valores respeitem a faixa de valores do tipo que você quiser converter, lógico.
Por exemplo, vc cria no java um int com o valor 60.000 e envia pede para a classe envia-lo como um UnsignedShort. A classe está aqui: http://www.guj.com.br/java/48335-c-e-java-arquivos#253015
Ela também faz o inverso. Você pode ler um unsigned short e ela automaticamente converterá o dado lido para um unsigned int, com o valor que tinha dentro daquele unsigned.

Agora, o usuário vai enviar a porta para que? Iniciar uma transmissão de arquivos?
É importante que você defina bem seu protocolo.

Para as configurações, existem as alternativas de xml, json, arquivos textos de propriedades ou mesmo de serializar arquivos. Existem APIs que serializam objetos em XML, como é o caso da castor.

Ah, e isso não é assunto de java básico. Por isso movi seu tópico para Java Avançado. Outra opção seria desenvolvimento web.[/quote]

não vinny, a porta é no servidor. que alguém vai ter que configurar.l não vou definir porta padrão pq vc sabe como funcionam algumas empresas… dezenas de bancos de dados servidor web… tudo rodando na mesma maquina. então preferi deixar a opção de alguem escolher a porta.
desculpa sobre o local do tópico, eu acostumei a postar aqui rsrs. acho que estou crescendo em ideias… ao menos em ideias.
vamos fazer com swing. uma amiga vai me auxiliar com o swing mais antes quero pensar em toda a lógica da coisa.
abraço e obrigado.

se puder postar pronta, interessa. este assunto é interessante.

Ah, ok.

Então seu protocolo precisará de uma mensagem de troca de porta. Você já sabe o que é um protocolo? Já especificou o seu?

De qualquer forma, fica uma dúvida. Como os outros clientes saberão como se conectar ao servidor, se ele trocar de porta? Porque o IP e a porta são como um endereço de internet. Se você troca-lo, ninguém saberá como acessar o seu servidor, a menos que conheça a nova combinação de IP e porta.

O duro de estratégias do tipo “esconder o servidor” ou “bloquear portas” é que muitas vezes elas também afetarão quem tenta se conectar ao seu próprio serviço e deveria ter autorização. =/

[quote=ViniGodoy]Ah, ok.

Então seu protocolo precisará de uma mensagem de troca de porta. Você já sabe o que é um protocolo? Já especificou o seu?

De qualquer forma, fica uma dúvida. Como os outros clientes saberão como se conectar ao servidor, se ele trocar de porta? Porque o IP e a porta são como um endereço de internet. Se você troca-lo, ninguém saberá como acessar o seu servidor, a menos que conheça a nova combinação de IP e porta.

O duro de estratégias do tipo “esconder o servidor” ou “bloquear portas” é que muitas vezes elas também afetarão quem tenta se conectar ao seu próprio serviço e deveria ter autorização. =/

[/quote]

é… não havia pensado nisso.
isso vai me tirar o apetite durante todo o domingo.
agora realmente não sei oque fazer, eu sinceramente não tinha pensado no cliente.
sei la, acho que vou especificar um default, e se não funcionar o operador de rede altera, afinal, provavelmente vai ser ele quem vai configurar a porta no servidor. ainda não tenho idéia para isso.
eu li um pouco sobre serversocket… to com um trabalho para entregar na faculdade amanha… se não tiver nada d+ esta semana, na terça vou começar a investir tempo e tentar tirar as idéias da cabeça para o papel.