开头:
C/S程序应用:客户/服务器: MSN:一个客户端,客户端打开之后连接到服务器上。
B/S程序:浏览器/服务器: 所有的代码直接放在服务器上即可。例如jsp。
C/S程序在Java中分为两种:
·基于TCP协议:Socket,可靠的服务:A→B
·基于UDP协议:不可靠,如手机的短信功能
一、
如果要编写一个TCP程序需要Java的两个包支持:
·java.net.*:主要提供网络支持
┠ServerSocket类:服务器端程序
┠Socket类:客户端程序
·java.io.*:传递信息流
客户端就两个功能:
·建立Socket
·接受输入的命令(输入流) →网络上传输的程序靠的是字节流 可以通过一个缓冲区:BufferReader
类PrintWriter java.io.PrintWriter 向文本输出流打印对象的格式化表示形式。向文本输出流打印对象的格式化表示形式。此类实现在 PrintStream 中的所有 print 方法。它不包含用于写入原始字节的方法,对于这些字节,程序应该使用未编码的字节流进行写入。与 PrintStream 类不同,如果启用了自动刷新,则只有在调用println、printf 或 format 的其中一个方法时才可能完成此操作,而不是每当正好输出换行符时才完成。这些方法使用平台自有的行分隔符概念,而不是换行符。 客户端可能会查询调用 checkError() 是否出现错误。
PrintWriter类中的方法:
PrintWriter(OutputStream out)
根据现有的 OutputStream 创建不带自动行刷新的新 PrintWriter。
void println(String x)
打印 String,然后终止该行。
void close()
关闭该流并释放与之关联的所有系统资源。
ServerSocket类中的方法:
Socket accept()
侦听并接受到此套接字的连接。
void bind(SocketAddress endpoint)
将ServerSocket 绑定到特定地址(IP 地址和端口号)。
void close()
关闭此套接字。
Socket类中的方法:
OutputStream getOutputStream()
返回此套接字的输出流。
Socket(String host, int port)
创建一个流套接字并将其连接到指定主机上的指定端口号。
void close()
关闭此套接字。
二、
在JDK中也准备了两个专门用于实现UDP的类:
·DatagramSocket java.net.DatagramSocket
此类表示用来发送和接收数据报包的套接字。数据报套接字是包投递服务的发送或接收点。每个在数据报套接字上发送或接收的包都是单独编址和路由的。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。在DatagramSocket 上总是启用 UDP 广播发送。为了接收广播包,应该将DatagramSocket 绑定到通配符地址。在某些实现中,将 DatagramSocket 绑定到一个更加具体的地址时广播包也可以被接收。DatagramSocket s =
new DatagramSocket(8888);这个是创建能够在 UDP 8888 端口上接收广播的 DatagramSocket。
其方法有:
void send(DatagramPacket p)
从此套接字发送数据报包。
void close()
关闭此数据报套接字。
void receive(DatagramPacket p)
从此套接字接收数据报包。
·DatagramPacket java.net.DatagramPacket
public final class DatagramPacket extends Object 太监类
此类表示数据报包。数据报包用来实现无连接包投递服务。每条报文仅根据该包中包含的信息从一台机器路由到另一台机器。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。不对包投递做出保证。
其方法有
DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port)
构造数据报包,用来将长度为 length 偏移量为 offset 的包发送到指定主机上的指定端口号。
DatagramPacket(byte[] buf, int length)
构造 DatagramPacket,用来接收长度为 length 的数据包。
byte[] getData()
返回数据缓冲区。
int getLength()
返回将要发送或接收到的数据的长度。
类String方法:
String(byte[] bytes, int offset, int length)
通过使用平台的默认字符集解码指定的 byte 子数组,构造一个新的 String。
类InetAddress java.net.InetAddress 此类表示互联网协议 (IP) 地址。
其方法有static InetAddress getByName(String host)
在给定主机名的情况下确定主机的 IP 地址。
类System java.lang.System public final class System extends Object
System 类包含一些有用的类字段和方法。它不能被实例化。在 System 类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。
主要字段:
static PrintStream err 标准错误输出流。
static InputStream in 标准输入流。
static PrintStream out 标准输出流。
常用方法:
static void exit(int status) 终止当前正在运行的Java虚拟机。
static void gc() 运行垃圾回收器。