黑马程序员_日记03(网络编程)

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

一:UDP,TCP
 1,UDP不需要建立连接(寄包裹),每个数据包不超过64K,不可靠,速度快
 2,TCP面向连接(打电话),通过三次握手完成连接,是可靠协议
二:Udp传输
 1,udp发送端
 calss UdpSend {
  public static boid main(Strng args[]) {
   //建立udpSocket服务
   DatagramSocket ds = new DatagramSocket();
   //确定数据,并将数据封装到数据包中
   byte[] buf = "date".getBytes();
   DataGramPacket dp =
    new DataGramPacket(buf,buf.length,InetAddress.getByName(""),10100);
   //通过Socket服务将数据发送
   ds.send(dp);
   //关闭资源
   ds.close();
  }
 }
 2,udp接收端
 class UdpRece {
  public static void main(String args[]) {
   //创建udpSocket 并指定监听的端口号
   DatagramSocket ds = new DatagramSocket(10100);
   //定义数据包,用于存储数据
   byte[] buf = new byte[1024];
   DataGramPacket dp = new DataGramPacket(buf,buf.length);
   //通过服务的receive()方法将接收到的数据存入数据包中
   ds.receive(dp);
   //通过数据包的方法获取其中的数据
   String ip = dp.getAddress().getHostAddress();
   String data = new String(dp.getData(),0,dp.getLength());
   //关闭资源
   ds.close();
    
  }
  
 }
 
三:TCP传输
 1,客户端
  //创建Socket服务,并指定要连接的主机和端口
  Socket s = new Socket("192.168.1.254",8888);
  //为了发送数据,应该获取socket流中的输出流
  OutputStream out = s.getOutputStream();
  out.write("data".getBytes());
  s.close();
 2,服务器端
  //创建服务端的socket服务,并监听一个端口ServerSocket();
  ServerSocket ss = new ServerSocket(8888);
  //获取连接过来的客户端对象,accept()方法,该方法是阻塞式的
  Socket s = ss.accept();
  //客户端如果发过来数据,服务端使用对应的客户端对象,
    获取该客户端对象的读取流读取客户端发送的数据
  InputStream in = s.getInputStream();
  //关闭资源
  s.close();
 3,练习(建立一个文本转换服务器)
  class TransClient{
   public static void main(String args[]) {
    Socket s = new Socket("",8888);
    BufferedReader bufr =
     new BufferedReader(new InputStreamReader(System.in));
    BufferedWriter bufo =
     new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
    BufferedReader bufi =
     new BufferedReader(new InputStreamReader(s.getInputStream()));
    String line = null;
    while((line=bufr.readLine())!=null) {
     if(line.equels("over"));
      break;
     bufo.write(line);
     bufo.newLine();
     bufo.flush();
     String str = bufi.readLine();
     System.out.println(str);
    }
    bufr.close();
    s.close();
   }
  }
  class TransServer{
   public static void main(String args[]) {
    ServerSocket ss = new ServerSocket("",8888);
    Socket s = ss.accept();
    BufferedWriter bufo =
     new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
    BufferedReader bufi =
     new BufferedReader(new InputStreamReader(s.getInputStream()));
    String line = null;
    while((line=bufi.readLine())!=null) {
     bufo.write(line.toUpperCase());
     bufo.newLine();
     bufo.fluse();
    }
    s.close();
    ss.close();
   }
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值