网络编程之一

基础知识:

  IP协议又称互联网协议是互联网间互联的数据报协议,它提供网间连接的完善功能,包括IP数据报规定互联网络范围内的地址格式

  TCP协议即传输控制协议,规定一种可靠的数据信息传递服务

  IP地址是用于唯一标识网络中的一个通信实体,比如一台电脑,一台打印机,或者是路由器的某一个端口,而在基于IP协议网络中传输的数据包,都必须使用IP地址来进行标识

  端口是一个16位整数,用于表示数据交给哪个通信程序进行处理0-65535

JAVA基本网络支持

  1.使用InetAddress类来代表IP地址

  2.使用URLDecoder和URLEndcoder用于完成普通字符串和MIME字符串之间的相互转换

  3.只用URL和URLConnection

    一旦获得了Url对象之后,就可以调用一些方法来访问该url对应的资源、

    创建一个和URL的连接,并发送请求,读取此URL引用的资源需要如下几个步骤:

  1.用url.openConnection()可以获得对应的urlconnection

  2.设置urlconnection的参数和普通请求属性

  3.如果只是发送get方式请求,则使用connect()方法建立和远程资源之间的实际连接既可,如果需要发送post方式的请求,则需要获取urlconnection实例对应的输出流来发送请求参数。

  4.远程资源变为可用程序可以访问远程资源的头字段,或通过输入流读取远程资源的数据

  在建立和远程资源的实际连接之前,程序可以通过一些方法来设置请求头字段

发送get请求时,只需要将请求参数放到url字符之后,以?隔开,程序直接调用urlconnection对象的connect()方法即可,如果程序要发送post请求,则需要先设置doin和doout两个请求头字段的值,再用Urlconnection对应的输出流来发送请求参数

基于TCP协议的网络编程

  IP协议只保证计算机能够发送和接收分组数据,IP协议负责将消息从一个主机传送到另一个主机,消息在传送过程中被分割成一个个小包

  TCP负责收集这些数据包,保证其正确连接,并且处理丢失等错误情况

   使用ServerSocket创建TCP服务器端,用accept方法来监听来自客户端连接请求

  客户端使用Socket来连接到指定的服务器

  在服务器和客户端都会产生一个socket,socket提供了两个方法来获取输入流和输出流,getinputstream getoutputstream,还可以设置超时时长

  当我们使用传统的bufferreader的readline方法读取数据时,在方法成功返回之前,线程被堵塞,程序无法继续执行,考虑到这个原因,服务器端应该为每一个socket单独启动一个线程,每一个线程都负责与客户端通信,从而引入多线程

  记录用户信息     可以让客户端在发送不同信息之前,先对这些信息进行恰当处理,比如加一些特殊字符,我们成为协议字符,可以用一个接口专门定义协议字符,然后为了解决不同用户和他所发送的信息间的关联,我们可以用一个MAP来保存这样子的键值

半关闭的SOCKET

  可以用socket提供的shutdowninput和shutdownoutput方法来进行关闭socket的输入流/输出流,使得socket在发送完信息,关闭输出流,来表示数据结束以后还能够接受数据

使用NIO实现非堵塞的socket通信

(待续)

  

 

posted on 2015-03-14 15:40  玲先霞  阅读(110)  评论(0编辑  收藏  举报

导航