通信学习----循序渐进

1.通信循序渐进过程

  ①.能够收发字节的服务器端

package Serverv1;


import java.io.InputStream;   
import java.io.OutputStream;   
import java.net.ServerSocket;   
import java.net.Socket;   
  
public class Server {   
    private InputStream in;   
    private OutputStream ou;   
  
    /**  
     * 创建服务器  
     *   
     * @param port  
     *            :端口号  
     */  
    public void setupServer(int port) {   
        try {   
            // 创建服务器套接字   
            ServerSocket ss = new ServerSocket(port);   
            while (true) {   
                // 等待客户端的链接   
                Socket sc = ss.accept();   
                System.out.println("一个客户端接入");   
                //得到输入输出流对象   
                in=sc.getInputStream();   
                ou=sc.getOutputStream();   
                   
                String s="欢迎那个谁!";   
                this.sendMsg(s);   
                int t;   
                //遇到回车结束读取   
                while((t=in.read())!=13){   
                    System.out.println(t);   
                }   
                //关闭客户端的链接   
                sc.close();   
            }   
        } catch (Exception ef) {   
            ef.printStackTrace();   
        }   
    }   
       
       
    //发送信息的私有方法   
    private void sendMsg(String msg)throws Exception{   
        ou.write(msg.getBytes());   
        ou.flush();   
    }   
       
    //程序入口   
    public static void main(String args[]) {   
    	Server s=new Server();   
        s.setupServer(12345);   
  
    }   
       
}  

 

 

 

 

代码分析:

    1.由于程序中sc=ss.accept();//该处阻塞,所以即使是使用while(true){...}这等让人心惊胆战的语句也不用担心,但是要尽量把条件设置为一个变量如:boolean b=true;     while(b){....}

 

    2.private void sendMsg()方法:在该方法中的代码常常会被复用,所以在该类中直接定义一个私有方法无疑会是程序变得简化,但是还必须注意的一点是,private 关键字,像这种方法就是只在该类的内部使用,它本身是为简化该类内部的一些核心的方法而设计,而不希望在外部类中调用,所以使用pirvate 不就体现了面向对象的封装特性。

 

  

 

 

 

缺陷分析:

   》》当telnet客户端断开后,在服务器端会陷入死循环,不停的输出-1(可添加一个判断然后结束死循环)

 

   》》客户端发送过来的任何信息都将被解析为一个byte型的数字,然后输出,而不能还原成客户端本来信息的面目

 

   》》不能同时让多个客户端连接进来

 

  

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值