黑马程序员——网络编程(一)

------- android培训java培训、期待与您交流! ----------

 

一、网络通讯要素

1、ip地址

 网络中的设备的标识

 不易记忆,可用主机名

 本地回环地址:127.0.0.1 主机名:localhost

 Ip地址被封装成一个对象,在java。Net包下,简单方法如下:

 

2、端口号

 用于标识进程的逻辑地址,不同进程的标识

3、TCP/UDP

UDP:

  将数据及源和目的封装成数据包中,不需要建立连接。

  每个数据包的大小限制在64K内

  因无连接,是不可靠协议

  不需要建立连接,速度快

TCP:

  建立连接,形成传输数据的通道。

  在连接中进行大量数据传输

  通过三次握手完成连接,是可靠协议

  必须建立连接,效率会稍低。

二、Socket

 (1)  DatagramSocket

    1、发送端:

   

    2、接收端:

 

    3、结果:

   


  (2)SocketServetSocket

    1、客户端:

   

  2、服务端:

   

  3、结果:

   
    

    这里需要注意的是,当时使用BufferedWriter对Socket连接中的流进行包装时,在使用readLine方法的时候,需要手动添加行结束标记(newLine方法),并需要刷新缓冲区(flush方法)。

     另:使用PrintWriter直接对Socket中的流进行包装,可以自动刷新,并且他的println方法自动带换行。(PrintWriter既可以包装字节流,也可以包装字符流)


 (3) 文件上传

     Client端文件若没有结束标记,即使文件上传完成了,server端的readLine方法将一直阻塞。除了使用自定义的标记外,Socket提供了关闭socket输出流、输入流的方法——shutdownOutput、shutdownInput。相当于给流加入了一个结束标记 -1。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值