import java.io.*;
import java.net.*;
public class TestClient  
{
public static void main(String[] args) 
{
try
{
Socket socket = new Socket("192.168.0.13",8000); System.out.println("服务IP地址--->"+socket);
InputStream input = socket.getInputStream(); OutputStream output =  socket.getOutputStream(); BufferedReader buffer = new BufferedReader(new InputStreamReader(input)); PrintWriter print = new PrintWriter(output); BufferedReader buffer_line = new BufferedReader(new InputStreamReader(System.in)); String s = buffer_line.readLine(); while(true)
{
print.println(s);//把通过键盘输入的信息给服务端.. System.out.println("客户端来的信息"+s); print.flush();//立刻给服务端 if (s.equals("quit"))
{
break;
} System.out.println("服务端发来的信息"+buffer.readLine()); s = buffer_line.readLine();

}


buffer.close();
print.close();
socket.close();
} catch(Exception e)
{
e.printStackTrace();
}

}
}
import java.io.*;
import java.net.*;
public class TestServer 
{
public static void main(String[] args) 
{
try
{
ServerSocket server  = new ServerSocket(8000); Socket socket = server.accept(); System.out.println("kehuIP地址--->" + server); InputStream input = socket.getInputStream(); OutputStream output =  socket.getOutputStream(); BufferedReader buffer = new BufferedReader(new InputStreamReader(input)); PrintWriter print = new PrintWriter(output); BufferedReader buffer_line = new BufferedReader(new InputStreamReader(System.in)); String s = buffer_line.readLine(); while(true)
{
print.println(s);//把通过键盘输入的信息给服务端.. System.out.println("服务端发来的信息"+s); print.flush();//立刻给服务端 if (s.equals("quit"))
{
break;
} System.out.println("客户发来的信息" + buffer_line.readLine()); s = buffer_line.readLine();
 
buffer.close();
print.close();
}


socket.close();
} catch(Exception e)
{
e.printStackTrace();
}

}
}
有点不太明白getInputStream getOutputStream是不是客户端调用getOutputStream就是把客户端键盘输入的消息给服务端那getInputStream又是怎么回事...
大家可运行一下我的程序怎么服务端没有收到客户端的消息有帮忙改的请加上点注释...

解决方案 »

  1.   

    inputstream是获得的
    outputstream是输出的
      

  2.   

    getInputStream() //获取这个连接的输入流
    getOutputStream() //获取这个连接的输出流也就是说,Server端getInputStream() 获取的输入流上的数据,
    就是客户端getOutputStream()获取输出流所发出的数据,简单点说,服务器端的输入流就是客户端的输出流 是对应的
      

  3.   

    又是秋水大哥
    这个问题刚才已经领悟另外可是秋水大哥 有没有运行一下程序有个更大的问题就就是为什么客户端向服务端发送数据的时候服务端并没有手到客户端发的数据可我用了fulsh()的
      

  4.   

    import java.io.*;
    import java.net.*;
    public class TestClient  
    {
    public static void main(String[] args) 
    {
    try
    {
    Socket socket = new Socket("localhost",8000);
    System.out.println("服务IP地址--->"+socket);
    InputStream input = socket.getInputStream();
    OutputStream output =  socket.getOutputStream();
    BufferedReader buffer = new BufferedReader(new InputStreamReader(input));
    PrintWriter print = new PrintWriter(output);
    BufferedReader buffer_line = new BufferedReader(new InputStreamReader(System.in));
    String s = buffer_line.readLine();
    while(true)
    {
    print.println(s);//把通过键盘输入的信息给服务端..
    System.out.println("客户端发出的信息"+s);
    print.flush();//立刻给服务端
    if (s.equals("quit"))
    break;
    System.out.println("服务端发来的信息"+buffer.readLine());
    s = buffer_line.readLine();
    }
    buffer.close();
    print.close();
    socket.close();
    }catch(Exception e)
    {
    e.printStackTrace();
    }

    }
    }
      

  5.   

    import java.io.*;
    import java.net.*;
    public class TestServer 
    {
    public static void main(String[] args) 
    {
    try
    {
    ServerSocket server  = new ServerSocket(8000);
    Socket socket = server.accept();
    System.out.println("kehuIP地址--->" + server);
    InputStream input = socket.getInputStream();
    OutputStream output =  socket.getOutputStream();
    BufferedReader buffer = new BufferedReader(new InputStreamReader(input));
    PrintWriter print = new PrintWriter(output);
    BufferedReader buffer_line = new BufferedReader(new InputStreamReader(System.in));
    String s = "";
    while(true)
    {
    System.out.println("客户发来的信息:"+ buffer.readLine());
    s = buffer_line.readLine();
    print.println(s);//把通过键盘输入的信息给服务端..
    System.out.println("服务端发出的信息"+s);
    print.flush();//立刻给服务端
    if (s.equals("quit"))
    break;

    }  
    buffer.close();
    print.close();
    socket.close();
    }catch(Exception e)
    {
    e.printStackTrace();
    }

    }
    }哈哈,给你改了一下,你看看吧,编译运行没问题了,想加多线程,有点懒啦,
      

  6.   

    String s = buffer_line.readLine();看到你TestServer while(true)上面的这句代码没???就是说,服务器端一直等待你的输入,才可以执行下面的代码的,
    输入流 的 readLine();这个方法会阻塞的 明白了吧?