Java Chat

Tråden skapades och har fått 10 svar. Det senaste inlägget skrevs .
1

Jag håller på att skriva ett litet chat program i Java. Problemet är att när jag skickar ett meddelande till en PC som har samma program så blir åäöÅÄÖ alldeles fel. Jag trodde att String (som jag lagrar meddelandena i) hanterade unicode bokstäver. I vilket fall så är ju en temporär lösning att använda sig av replaceAll(String regex, String replacement) men det blir ju bara en temporär lösning, jag har ingen aning om hur det blir på tex. linux. Någon som har en aning om hur jag ska lösa problemet?

  • Medlem
  • International user
  • 2004-04-10 17:22

hmm, hur skickar du över datan från klient till klient?

Kika på klassen DataOutputStream. Den har metoden writeUTF. Kanske den kan hjälpa dig.

Jag använder mig av Datagram, det vill säga UDP. Ett exempel är detta där s är en String och socket är en DatagramSocket :
DatagramPacket packet = new DatagramPacket(s.getBytes(), s.length(), address, 2332);
socket.send(packet);

  • Medlem
  • 2004-04-10 21:03
Ursprungligen av Jonas.N:

Jag använder mig av Datagram, det vill säga UDP. Ett exempel är detta där s är en String och socket är en DatagramSocket :
DatagramPacket packet = new DatagramPacket(s.getBytes(), s.length(), address, 2332);
socket.send(packet);

getBytes() encodar din sträng i plattformens default charset. Använder du sedan kontruktorn String(byte[] bytes) på andra sidan, som jag kan tänka mig att du gör, decodar den med plattformens default charset. En kvalificerad gissning är att det är olika default charset på mac o pc som gör att det inte funkar som du vill. Använd istället getBytes(String charsetName) och konstruktorn String(byte[] bytes, String charsetName) med samma charsetName (t.ex UTF-8 eller ISO-8859-1) så löser det sig förhoppningsvis.

Tack så mycket! Jag ska testa om det fungerar omedelbart.

En fråga bara, varför UDP? Ska du multicasta?

Ciryon

Jepp. Jag tänkte mig multicast för att hålla reda på vilka som var på nätverket utan att använda någon server. När jag skickar meddelanden så skickar jag dock dem till direkta adresser så att man kan skicka privata meddelanden. Jag använder UDP för meddelanden också av två anledningar. Först och främst så tyckte jag det verkade lite enklare än TCP och allt vad det innebär med data strömmar. Den andra anledningen är att eftersom jag redan använde multicasting så kunde jag lika gärna använda UDP för meddelanden med, jag tror nämligen att det är extremt sällan som det försvinner några paket på lokala nätverk.
Om jag blir färdig med programmet någon gång så kan jag ladda upp det så att ni får se, lite inte allt för mycket på det dock, jag håller bara på att lära mig om java.

  • Medlem
  • Göteborg
  • 2004-04-11 02:31

Hej.
Kanske inget direkt svar på din fråga men here goes ändå

Mitt första Java Chatt program var med multicast. Sen skrev jag en riktig klient/server program som jag är mycket stolt över då det var mitt första riktiga program. Smileys stöd och allt

Du kan kika och ladda ner källkoden (GPL) på min sida: http://b0bben.homelinux.org

Jag letade själv efter nåt sånt att lära mig av när jag skrev den, så den kanske kan hjälpa dig på nåt sätt.

mvh
b0bben

  • Medlem
  • Göteborg
  • 2004-04-11 02:33

en till sak:
åäö visas skumt på Mac fast java är Unicode.
Det märkte jag i min senaste skapelse, ett mail program.

På PC visas den rätt.

mvh
b0bben

Ok, tack. Jag ska ta mig en titt ....
En client/server variant var aldrig aktuellt i detta fallet eftersom jag inte ska konkurera med ICQ, det ända jag vill göra är att kunna skicka meddelanden till min bror som sitter i andra ändan av huset, det är så jobbigt att skrika eller gå och prata med honom direkt.

Senast redigerat 2004-04-11 13:06
  • Medlem
  • Göteborg
  • 2004-04-11 21:41

Tänk då på vad du skriver till han för det är enkelt och läsa de messen ifall du inte shyfflar om bittarna eller krypterar på nåt sätt. Trust me, i know

1
Bevaka tråden