ServerScoket与Socket的关系

SeverSocket就还好比站在酒店门口的迎宾小姐,而Socket好比顾客,迎宾小姐的工作就是迎接到来的顾客。
下面我们言归正传。
创建服务器:ServerSocket serverSocket = new ServerSocket(端口号);

我们可以创建一个工具类专门用来读数据

这里写代码片
    public class Util(){
    public static String read(InputStream in){
        Byte[] b = new Byte[1024];
        String content ="";
        int length = -1;
        try{
            //返回-1读取完毕
            while((length=in.reader(b))!=-1){
                String value = new String(b,0,length);
                if("#end#".equals(value)){
                    break;
                }else{
                    content+=value;
                }

            }
                return content

            }catch(IOException e) {
            e.printStackTrace();
        }

    }
    public static void write(OutputStrem out,String message){

            try{
                 while(true){
                     out.writer(message.getByte());
                     out.writer("#end#");
                 }
                }catch(IOException e){
                    e.prinStackTrace();
            }
        }

}

下面我们来看看迎宾小姐与客户之间的关系

这里写代码片
    //我的服务器
    public class MyServer{
        public static void main(String[]args){
                System.out.println("服务器开启");
            ServerSocket serverSocket = new ServerSocket(9898);
            System.out.println("服务器等待连接");

            Socket socket = serverSocket.accpt();
            new ServerThread(socket);

            InputStream in = serverSocket.getInputStream();
            String content = Util.read(in);
            System.out.println(content);
            System.out.println("服务器结束");
    }


    }

下面我创建一个线程来专门来维护客户端,就好比迎宾小姐接待了一个客户就下班了吧,她应该重新回到工作岗位来迎接下一位客户

这里写代码片
  public class ServerThread implemments Runnabel{
    InputStream in;
    public ServerThread(Socket socket){
        this.socket = socket;
        try{
             in = socket.getInputStream();
             //获取地址值
             InetAddress address = soket.getInetAddress();
             System.out.println("等待客户端连接"+address);
            }catch(IOException e){
                e.prinStackTrace();
            }
        in = socket.getInputStream();
        //线程开启
        new Thread(this).start();
    }
    public void run(){
        while(true){
            String content = Until.read(in);
            System.out.printlm(content);
        }

    }
}

//我的客户端

这里写代码片

public static void main(String[]args){
    Socket socket = new Socket("localhost",9898);
    OutputStream out = socket.getOutputStream();
    byte []b = "找个美女好过年".getBytes(); 
    Util.write(out,b);
}

由于纯手工手写,不知道程序能运行起来,但逻辑是没有错的

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值