Azərbaycan dili Bahasa Indonesia Bosanski Català Čeština Dansk Deutsch Eesti English Español Français Galego Hrvatski Italiano Latviešu Lietuvių Magyar Malti Mакедонски Nederlands Norsk Polski Português Português BR Românã Slovenčina Srpski Suomi Svenska Tiếng Việt Türkçe Ελληνικά Български Русский Українська Հայերեն ქართული ენა 中文
Subpage under development, new version coming soon!

Subject: Programação

2009-04-16 17:55:57
pelo menos dormi até tarde hoje, não ia trabalhar mesmo... hehehe
2009-04-16 23:06:27
ok.. vlw muito pela ajuda

to tentando colocar nick mas ta foda... e os clientes nao tão interagindo
2009-04-16 23:38:11
vais ter que criar um objeto usuario e uma lista de usuarios no servidor alto nível. esta lista tem que conter a thread que acessa o usuário tambem (na verdade o objeto é uma dupla <usuario,thread>) ... cada thread receberá um usuário específico e vai precisar ter operações de sincronizaçao com o servidor (pois é a thread quem vai receber a requisição de mudança de nick, por exemplo).

interessante, quando tiver um tempinho vou adicionar isso no meu codigo :)
2009-04-17 00:09:24
traduzindo...

ahuahuaha :~~

vou desistir desse curso.. num entendo nada ;~~
2009-04-17 00:51:31
que nada, vc tá bem melhor do que eu nesta altura do curso.

traduzindo: vai ser necessario criar um Usuario.java contendo atributos de usuario como:
int ID;
String nick;

alem disso, vai ser necessario criar uma classe interna em servidor tipo TuplaUserThread com:
Usuario usuario;
Thread instancia;

em Servidor.java vai ser necessario ter um "List tuplas." (pode ser ArrayList<TuplaUser>) com todos os usuarios conectados no servidor e suas threads... e um updateListaTuplas(Usuario usuario) publico... tu vai ter que implementar uma busca na lista

cada ThreadConexao vai receber um Usuario. cada TuplaUserThread vai ter um construtor que atribui "instancia", uma referencia para a Thread. Isso vai ser passado pelo Servidor quando alguem conectar. Tipo assim: em Servidor vai ter algo como tuplas.add(new Usuario(),new ThreadConexao(...)); logo depois de socket.accept().

alem disso, precia adicionar a mensagem associada a mudança de nick (por exemplo "/nick") em ThreadConexao. Logo depois do lugar onde as mensagens são interpretadas (procura por "Exit" depois de in.readline(), acho)... esta chamada vai: 1- mudar o nick do usuario local, 2- chamar o método parent.updateListaTuplas, passando o usuario local modificado como parametro.

além disso acho que tu vai ter que fazer uma mensagem tipo NICK_OK, e o servidor vai enviar esta mensagem para o usuario depois que tudo acima aconteceu... ai o cliente vai mudar o nick do cara no frame, por exemplo.

isso para uma simples mudança de nick... tem um bocado de trabalho pela frente, companheiro :)
2009-04-17 00:53:36
o nick_ok é pra garantir algumas coisas do tipo: usuario não coloca nick inválido ou não coloca nick duplicado, etc...
2009-04-17 01:28:08
que nada, vc tá bem melhor do que eu nesta altura do curso.

ia falar a mesmissima coisa ....
2009-04-17 02:30:43
ahh agora comecei a entender...

macho como nao vai dar tempo eu queria soh colocar o nick mesmo sem nenhuma restrição
tenho q criar Usuario.java, TuplaUserThread mesmo assim?





e isso aqui, antes tava acontecendo(esquece oq ta em itálico) aí tu mudou e eu não sei mais como fazer, tipo, antes quando eu escrevia, todos os clientes viam a msg, agora quando eu escrevo nao ve mais

• Cliente deverá implementar interface gráfica que permita a exibição das mensagens recebidas, o envio de mensagens para todos os clientes (broadcast) ou para um cliente em particular
2009-04-17 02:55:30
assim, se você quiser que o nick de um cliente seja visto pelos outros clientes, você vai precisar da lista de nicks (pelo menos, se tu não quiser implementar usuario.java) e da lista de threads... a forma mais facil de validar é criar esta classe que contenha a dupla e fazer uma lista das classes...

pra broadcast, tu vai precisar acessar a lista de threads Servidor.java... uma implementação possível é da seguinte forma:
1) antes de mais nada, uma palavra do protocolo tipo "/broadcast" (o cliente digita: "/broadcast <mensagem>")
2) uma função em ThreadConexao.java do tipo enviaBroadcast(String msg) que:
2.1 - recebe a msg do while
2.2 - acessa uma função em Servidor.java que repassa o broadcast tipo "parent.enviaBroadcast(this, msg);"
3) uma função em ThreadConexao.java que informa a instância de PrintWriter out, pois o servidor vai precisar imprimir a mensagem para cada uma das threads... tipo "public PrintWriter getPrintWriterOut() { return this.out; }"
4) a função enviabroadcast(Thread t, String msg) em Servidor.java, que:
4.1 percorre a lista de Threads e envia a mensagem para cada um das threads (tipo t.getPrintWriterOut().println(msg))

para um cliente em particular, a logica é muito parecida. a diferença é que só envia o println para a thread do usuario (ai precisa da Tupla mesmo, nao tem jeito...)
2009-04-17 02:58:22
Quando estiver em Campina Grande vai me dar uma aulinha de programação neh?

\o/
2009-04-17 03:08:31
heheh zero bronca e a primeira aula é grátis
2009-04-17 03:28:05
Aeeee

\o/

uhauahuuhahuahu
2009-04-17 04:11:29
rac2 é um fi duma mãe

se garante d+

o problema eh q eu nao consigo entender a linguagem dele! :P

ahsuahs
2009-04-17 04:20:21
:((((( num entendesse nada? :(((((
2009-04-17 04:35:23
um pouco, pq tem coisas ai q eu nunca vi, eu nao sei aonde implementar...

o jeito mais facil deu entender é q nem tu fez daquela vez, implementou o código e do lado de cada passo vc colocava

// comentários

ali sim eu entendia tudim! :D
(edited)
2009-04-17 05:06:38
jah imprimi!

vlww

fui :)