doubt about socket programing

C

chandu

my client side programme

import java.net.*;
import java.io.*;

class vissock1
{
public static void main(String args[]) throws IOException
{
Socket s=new Socket("172.18.19.203",80);
InputStream in=s.getInputStream();
OutputStream out=s.getOutputStream();
DataInputStream d=new DataInputStream(System.in);
int j;
for(int i=0;i<3;i++)
{
try
{
int k=Integer.parseInt(d.readLine());
out.write(k);
}
catch(Exception e)
{
System.out.println("enter valid no");
}
while((j=in.read())!=-1)
{
System.out.print((char) j);
}

}

}
}

my server side programme

import java.net.*;
import java.io.*;

class ser
{
public static void main(String args[]) throws IOException
{
ServerSocket s1=new ServerSocket(80);
Socket s=s1.accept();
InputStream in1=s.getInputStream();
OutputStream out1=s.getOutputStream();
while(1==1)
{
int j=in1.read();
if(j%2==0)
{
out1.write("even\n".getBytes());
}
else
{
out1.write("odd\n".getBytes());
}
}
}
}


i am able to get only one input from keyboard and accordingly the
response from server for that input.and then program is hanging
up...when i remove the code for reading server response from the for
loop(in client code) and keep out side the for loop i am getting
output.what is the reason.please help me.
 
M

Matt Humphrey

chandu said:
my client side programme

import java.net.*;
import java.io.*;

class vissock1
{
public static void main(String args[]) throws IOException
{
Socket s=new Socket("172.18.19.203",80);
InputStream in=s.getInputStream();
OutputStream out=s.getOutputStream();
DataInputStream d=new DataInputStream(System.in);
int j;
for(int i=0;i<3;i++)
{
try
{
int k=Integer.parseInt(d.readLine());
out.write(k);
}
catch(Exception e)
{
System.out.println("enter valid no");
}
while((j=in.read())!=-1)
{
System.out.print((char) j);
}

i am able to get only one input from keyboard and accordingly the
response from server for that input.and then program is hanging
up...when i remove the code for reading server response from the for
loop(in client code) and keep out side the for loop i am getting
output.what is the reason.please help me.

Your client loop to read the reply from the server is waiting for EOF. I
think you want to stop reading after \n instead. Hint: socket streams are
not packet-oriented at all. Also, DataInputStream.readLine() is
deprecated--look at switching to BufferedReader. Note also that if the user
enters an invalid number you program will still attempt to read a response
that will never come. Read reply should only be coupled with a successful
write--and you can use BufferedReader on the reply here also.

Cheers,
Matt Humphrey (e-mail address removed) http://www.iviz.com/
 
C

chandu

thank you for your reply..can you suggest me any link for better
understainding of streams in java..
 
M

Matt Humphrey

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top