webForumDet fria alternativet

Problem med sockets

6 svar · 402 visningar · startad av Wahlenberg

WahlenbergMedlem sedan juni 200073 inlägg
#1

Hej. Jag har problem med en ganska enkel sak. Att skicka en PublikKey över en socket. Av någon anledning funkar det inte.
Socket clientSocket = new Socket("127.0.0.1", 8000);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());

Jag försöker därefter skicka en Byte[] array som en string mha:
outToServer.writeBytes(clientPubKeyEnc.toString());
På andra sidan socketen öppnar jag socketen:
Socket connectionSocket = welcomeSocket.accept(); BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));

Jag försöker sedan läsa in det som ska vara skickat med:
String clientPubKeyString = inFromClient.readLine();
Men det är här något går snett: Prövar jag att println(clientPubKeyString) så får jag inget resultat.
Om jag försöker println("jag nådde hit") ger heller ingen output.
Helt enkelt så exekveras inte
String clientPubKeyString = inFromClient.readLine(); .
Någon som ser vad jag gjort för fel?
tack!

spangoMedlem sedan juni 20008 205 inlägg
#2

Jag är trött och kan ha fel, men det kan vara att du inte spolar utdatan från avsändaren. Lägg till ett anrop till outToServer.flush() efter att du anropat writeBytes.

LimeMedlem sedan sep. 2001961 inlägg
#3

Jag skulle iofs använda en BufferedWriter i sändarändan också och inte bara en DOS om nödvändigt vill skicka en sträng.

Sedan misstänker jag att när du gör toString() så lägger den inte till någon newline i slutet för \n finns inte i clientPubKeyEnc (eller) och BufferedReader.readLine() läser tills den hittar \n eller \0.

Fast... strängar i java ska ju vara null-terminerade.

Gör som Spango säger...- ;-)

spangoMedlem sedan juni 20008 205 inlägg
#4

Lime skrev:

Fast... strängar i java ska ju vara null-terminerade.

Uhm, det behöver de väl inte alls vara?

LimeMedlem sedan sep. 2001961 inlägg
#5

Nej, jag konstaterade det jag med. Om man t.ex. skickar in en Byte[] som inte har ett nulltecken sist så blir den inte null-terminerad.

readLine() söker efter något av \n \r eller \0. Kan vara därför det inte tas emot något.

spangoMedlem sedan juni 20008 205 inlägg
#6

Låter hysteriskt rimligt.

The_HulkMedlem sedan juni 20031 837 inlägg
#7

Av någon underlig anledning har det betydelse om man först gör getOutputStream eller getInputStream, kommer tyvärr inte ihåg i vilken ordning man ska göra det. gör man det i fel ordning hänger programmet sig det första stället av get....Stream

Hade själv problem med det, satt några timmar utan att hitta felet sen var det någon som frågade om jag testat ett byta på de två raderna och så fugnerade det.

hoppas du förstår vad jag menar. säg gärna till om det hjälper.

134 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)