2009-05-19 9 views
0

Comment lire une très grosse donnée avec DataInputStream de socket Si les données sont au format String et ont une longueur de plus de 1,00,000 caractères.Comment lire des données volumineuses dans un socket et écrire dans socketchannel

Egalement comment écrire ces grandes données en utilisant SocketChannel dans Java?

+1

Deepak, s'il vous plaît poser vos questions plus précisément. Qu'avez-vous essayé jusqu'à présent? Si vous avez écrit du code, qu'est-ce qui ne va pas, etc.? –

+0

Si j'utilise read() pour des données volumineuses. Alors laissez la longueur des données est réellement 100000 caractères byt ma méthode de lecture peut lire jusqu'à 40000 octets maximum à ce moment octet [] b = nouvel octet [100000] DataInputStream.read (b); System.out.println (nouvelle chaîne (b)); – Deepak

Répondre

1

Le problème est que vos données arrivent en morceaux. Soit la taille du paquet est limitative, soit DataInputStream a peut-être un tampon interne de seulement 40k. Je ne sais pas, mais ça n'a pas d'importance. De toute façon, tous les 1000000 octets n'arriveront pas à la fois. Donc, vous devez réécrire votre programme pour s'y attendre. Vous devez lire les plus petits morceaux que vous recevez et les stocker dans une autre variable octet [1000000] (en gardant une trace de l'endroit où se trouve votre dernier index d'octets). Continuez à boucler jusqu'à ce que vous ayez fini de lire le socket. Ensuite, vous pouvez travailler avec votre variable interne.

+0

Salut Chris, Il y a une situation où je reçois mes données de lecture est 0 bien que toutes les données ne soient pas encore reçues. Alors, comment surmonter ce problème. Pouvez-vous donner quelques exemples. – Deepak

Questions connexes