网络编程浅谈

  网络编程的本质是两个(或多个)设备(如计算机)之间进行数据传输。

  通过一定的物理设备将处于不同位置的计算机连接起来组成的网络,就叫做计算机网络;在这个网络中,包括了计算机、路由器、交换机、网线(光纤);路由器和交换机组成了计算机网络的核心,而计算机,只不过是这个巨大网络中的某一个节点。

  对于网络编程来说,最重要的是计算机和计算机之间的相互通信,那么首先需要解决的问题是:如何找到你需要找到的某一台计算机?这个问题变引申出了IP的概念。

  为了能够识别网络上的每一个计算机,人们给每一个计算机加上一个数字表识,这个就是IP了,现在IPv4、IPv6都有在用。这里用IPv4说明,IPv4由4个0~255的数字组成,例如:99.66.88.255。每个接入网络的计算机都有唯一的地址,这个IP可能是静态的,也有可能是动态的。
  
  但是,由于IP地址不方便记忆,所以人们又发明了域名,例如:baidu.com,一个IP地址可以对应多个域名,但是一个域名只能对应一个IP地址。值得注意的一点是,在传输数据前,都是需要把域名重新解析成IP地址的,实现该功能的,我们把它称作为DNS服务器。

  IP和域名可以很好的解决找到计算机的问题,但是,在实际中,我们一台计算机上都会运行多个网络程序,这个时候,便引入了端口。硬件上规定,端口号在0~65535间,每个端口对应一个网络程序(一个网络程序可以占多个端口)。这样,传输数据时,就很容易的找到某一台的某一个程序了。

  网络通信都是基于“请求-响应”模式,第一次主动发起通讯的被称作为客户端(client),等待连接的被称作为服务器端(server),建立了连接之后,两者的性质就是完全一样了,这种结构称之为C/S结构,而有一些通用的客户端,如浏览器,使用浏览器做为客户端的这种结构,我们称之为B/S结构。二者个有优劣,此处不详述。
  另外一种特殊的P2P(point to point)程序,如电驴、BT等,这种程序中,既包含客户端,又包含服务器端,它可以连接其他的BT种子,也可以向其他的BT种子传输数据。

  最后,介绍网络编程中最重要,最复杂的 —— 协议(Protocol),按照前面的介绍,网络编程就是运行在不同计算机中两个程序之间的数据交换。在实际进行数据交换时,为了让接收端理解该数据,计算机比较笨,什么都不懂的,那么就需要规定该数据的格式,这个数据的格式就是协议

  那么如何来编写协议格式呢?答案是随意。只要按照这种协议格式能够生成唯一的编码,按照该编码可以唯一的解析出发送数据的内容即可。也正因为各个网络程序之间协议格式的不同,所以才导致了客户端程序都是专用的结构。

  OK,以上是理论基础。

  网络通讯方式
  1:TCP(传输控制协议)
  2:UDP(用户数据报协议)
  简单描述一下两者的区别,TCP需要经过连接确认,三次握手,也就是说它是可以保证数据可以传输到对方,而UDP则有点类似于广播,把数据发送出去了,不管有没有接收到。所以,我们在传输重要的数据时,就要选用TCP的方式,而传输量大且非重要的数据时,就可以用UDP方式。甚至可以两者结合使用。
  通讯步骤
  客户端:1:建立连接;2:交换数据;3:关闭连接
  服务端:1:监听端口;2:获得连接;3:交换数据;4:关闭连接

try {
        //第一步,建立连接
        Socket socket2 = new Socket("baidu.com",80);
        //第二步,数据传输,在Java中,数据的传输通过I/O实现。
        OutputStream os = socket2.getOutputStream(); 
        //最后,关闭连接
        socket2.close();
        os.close();
} catch (Exception e) {

}

这就是一个最简单的建立连接、交换数据、关闭连接的过程。
  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值