您的位置:首页 > 理论基础 > 计算机网络

JAVA网络编程基础

2011-01-27 19:56 495 查看
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服务器程序所有使用的端口号。

将用户指定的端口号保存到一个文件中,当服务器下次启动时直接从文件读取端口号。

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

-------------------------------------网络编程基础完--------------客户端服务端程序的不同方式开发了解不深。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: