JAVA网络编程基础

来源:互联网 发布:mac safari使用技巧 编辑:程序博客网 时间:2024/04/29 14:03

1、TCP和UdP在java中支持网络通讯程序的开发。
Tcp协议是可靠的连接传输,使用三方握手的方式完成通讯的
udp协议不可靠的连接传输,传输额时候接收方不一定可以接受到。

 

2、IP internet protocol
电脑在互联网中的身份
Ip地址=网路地址+主机地址
网络号:用于识别该主机所在网络
主机号:用于识别该网络中的主机
网络号分五类:我们一般使用的是c类。a.b中跨过的127字段。127.0.0.1用于表示本机

端口号:范围0-65535之间。0-1023用于一些知名的网络服务和应用。

私有IP通过网关代理上网的原理:
内部Ip先传给内部网关,网关拥有外部Ip地址,然后将内容与外部的计算机相互通信。

 

3、InetAddress类
已实现的接口: Serializable  可以被序列化成二进制数据。
类中没有构造方法或是构造方法被影藏。可以使用static InetAddress getLocalHost()
          返回本地主机, 来返回本类的实例:

  InetAddress locAdd = null ;
  InetAddress remAdd = null ;
  locAdd = InetAddress.getLocalHost() ;// 得到本机
  remAdd = InetAddress.getByName("www.baidu.com")  ;
实例化后 ,使用 String getHostAddress()
          返回 IP 地址字符串(以文本表现形式)。

 

4、URL (Uniform Resource Locator)统一资源定位符。
构造方法1:URL(String protocol, String host, int port, String file)
          根据指定 protocol、host、port 号和 file 创建 URL 对象。

URLConnection
protected  URLConnection(URL url)
          构造一个到指定 URL 的 URL 连接。

也可指用Url类中的openConnection()实例化
URL url = new URL(String str) ;
  URLConnection urlCon = url.openConnection() ;

URLEncoder和URLDecoder
static String encode(String s, String enc)
          使用指定的编码机制将字符串转换为 application/x-www-form-urlencoded 格式

 

5、TCP网络程序
TCP服务程序必须先启动运行,TCP客户程序才能连接到TCP服务器;
Windows提供了telnet程序测试TCP服务器程序。


Socket和SeverSocket类
Socket是网络驱动程序提供给它应用程序的接口和一种机制。
Socket数据发送的过程:首先是应用程序产生Scoket,然后应用程序调用bind将Socket信息通

知给驱动程序。应用程序将要发送的数据传送给Socket,驱动程序从Socket取出数据通过网卡

发送出去。

构造方法1;ServerSocket(int port)
          创建绑定到特定端口的服务器套接字。


      使用Socket和ServerSocket编写客户端和服务器:

服务端:

public class HelloServer{
 public static void main(String args[]) throws Exception { // 所有异常抛出
  ServerSocket server = null ;  // 定义ServerSocket类
  Socket client = null ; // 表示客 户端
  PrintStream out = null ;  // 打印流输出最方便
  server = new ServerSocket(8888) ; // 服务器在8888端口上监听
  System.out.println("服务器运行,等待客户端连接。") ;
  client = server.accept() ;  // 得到连接,程序进入到阻塞状态
  String str = "hello world" ; // 表示要输出的信息
  out = new PrintStream(client.getOutputStream()) ;
  out.println(str) ; // 向客户端输出信息
  client.close() ;
  server.close() ;
 }
};

客户端:
public class HelloClient{
 public static void main(String args[]) throws Exception { 
  Socket client = null ; // 表示客 户端
  client = new Socket("localhost",8888) ;
  BufferedReader buf = null ; // 一次性接收完成
  buf = new BufferedReader(new InputStreamReader

(client.getInputStream())) ;
  String str = buf.readLine() ;
  System.out.println("服务器端输出内容:" + str) ;
  buf.close() ;
  client.close() ;
 }
};

 此类网络程序开发称为C/S构架。一般这种程序维护2套代码,比较麻烦

另外一套构架B/S,浏览器/服务器。

 

6、Echo程序:
不同于上面的只能接受一次。Echo程序可以不停得接受一个客户端发送的数据。

但还是解决不了几个客户的请求。。可以使用多线程编程来解决。

 

7、UDP程序
在开发中使用DatagramPacket包装一条要发送数据,然后使用DatagranSocket完成数据的发送

DatagranSocket类常用构造
  DatagramSocket()
          构造数据报套接字并将其绑定到本地主机上任何可用的端口。
  DatagramSocket(int port)
          创建数据报套接字并将其绑定到本地主机上的指定端口。
  DatagramSocket(int port, InetAddress laddr)
          创建数据报套接字,将其绑定到指定的本地地址。
 方法:
void receive(DatagramPacket p)
          从此套接字接收数据报包。
 void send(DatagramPacket p)
          从此套接字发送数据报包。

DatagramPacket类
DatagramPacket(byte[] buf, int length)
          构造 DatagramPacket,用来接收长度为 length 的数据包。
DatagramPacket(byte[] buf, int length, InetAddress address, int port)
          构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。

 

8、检测和解决端口号冲突问题
使用netstat命令查看当前正在使用的TCP端口号
通过一个配置参数来指定TCp服务器程序所有使用的端口号。
将用户指定的端口号保存到一个文件中,当服务器下次启动时直接从文件读取端口号。

 

应用程序协议和网络通讯协议的关系。

 

 

-------------------------------------网络编程基础完--------------客户端服务端程序的不同方式开发了解不深。