1、服务器端程序

package Socket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;

public class EchoServer {

    public static void main(String[] args) throws Exception {
        
        ServerSocket server =null;//定义ServerSocket对象
        Socket client=null;//定义socket对象,表示客户端
        PrintStream out=null;//声明打印流对象,以向客户端输出
        BufferedReader buf = null;//用于接收客户端发来的信息
        server = new ServerSocket(8888);//此服务器在8888端口进行监听
        boolean f=true;
        while(f){
            System.out.println("服务器运行,等待客户端连接");
            client=server.accept();//接收客户端连接
            buf = new BufferedReader(new InputStreamReader(client.getInputStream()));//得到客户端的输入信息
            out= new PrintStream(client.getOutputStream());
            //循环读取buf所有内容
            boolean flag=true;
            while(flag){
                String str=buf.readLine();
                if(str==null||"".equals(str)){
                    flag=false;//结束循环
                }
                else{
                    if("bye".equals(str)){
                        flag=false;
                    }
                    else
                    {
                        out.println("ECHO:"+str);//正常结束,向客户端回显信息
                    }
                }
            }
            out.close();
            client.close();
            
        }
        server.close();
    }

}

2、客户端程序

package Socket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class EchoClient {

    public static void main(String[] args) throws Exception {
        
        Socket client=null;//声明Socket对象
        client=new Socket("localhost",8888);//指定连接的主机和端口
        BufferedReader buf=null;//接收服务器端发送回来的信息
        PrintStream out=null;//输出流,向服务器端发送信息
        BufferedReader input=null;
        input=new BufferedReader(new InputStreamReader(System.in));//从键盘接收数据
        out = new PrintStream(client.getOutputStream());//向服务器端发送信息
        buf= new BufferedReader(new InputStreamReader(client.getInputStream()));//接收服务器端输入信息
        boolean flag=true;
        while(flag){
            System.out.println("输入信息:");
            String str=input.readLine();//从键盘接收数据
            out.println(str);    //向服务器端输入信息
            if("bye".equals(str)){    //如果输入bye,结束操作
                flag=false;
            }
            else{
                String echo=buf.readLine();//接收ECHO信息
                System.out.println(echo);//输出ECHO信息
            }
        }
        client.close();
        buf.close();
    }

}

 效果如下:

 

此时,服务器每次只能有一个用户连接,属于单线程,要让多个用户连接服务器,要使用多线程...

 posted on 2016-12-19 14:47  布鲁布鲁sky  阅读(440)  评论(0编辑  收藏  举报