Socket和ServerSocket是怎样接收消息的?例如:客户端发送一条消息  服务端是怎样知道它发送过来了?服务端怎样给客户端发消息的求相关类的方法求完整详解~!!!

解决方案 »

  1.   

    ServerSocket在一个端口上监听,有消息过来时自然就会知道。
    ServerSocket知道有客户端访问之后,自然就能得到这个客户端,也能得到客户端Socket的实例,只要能得到与客户端Socket相关联的流,在往流里写入数据,就能实现服务器给客户端发消息。
    给你一个小例子:
    Clientimport java.io.*;
    import java.net.*;public class Client {
    public static void main(String args[]) {
    try{
    Socket socket=new Socket("127.0.0.1",4700);
    BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
    PrintWriter os=new PrintWriter(socket.getOutputStream());
    BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
    String readline;
    readline=sin.readLine(); 
    while(!readline.equals("bye")){
    os.println(readline);
    os.flush();
    System.out.println("Client:"+readline);
    System.out.println("Server:"+is.readLine());
    readline=sin.readLine(); 

    os.close(); 
    is.close();
    socket.close(); 
    }catch(Exception e) {
    System.out.println("Error"+e); 
    }
    }
    }Server:import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;public class Server extends Thread{
    public static void main(String args[]){
    try{
    ServerSocket server=null;
    try{
    //while(true)
    server=new ServerSocket(4700);
    }catch(Exception e) {
    System.out.println("can not listen to:"+e);
    }
    Socket socket=null;
    try{
    socket=server.accept();
    }catch(Exception e) {
    System.out.println("Error."+e);
    }
    String line;
    BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
    PrintWriter os=new PrintWriter(socket.getOutputStream());
    BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Client:"+is.readLine());
    line=sin.readLine();
    while(!line.equals("bye")){
    os.println(line);
    os.flush();
    System.out.println("Server:"+line);
    System.out.println("Client:"+is.readLine());
    line=sin.readLine();

    os.close(); 
    is.close(); 
    socket.close(); 
    server.close(); 
    }catch(Exception e){
    System.out.println("Error:"+e);
    }
    }
    }
      

  2.   

    看TCP/IP四层协议吧,由传输层递交数据给应用层
      

  3.   

    1L正解
    BufferedReader和PringWriter 这是最简单的你也可以直接读写 InputStream和OutputStream
      

  4.   


    大牛级别的就是不一样。直接来协议了虽然我看过TCP/IP的协议 但是我还是不是很清楚。我表示大一学生看起有压力