一:UDP编程
.Inetaddress类
该类没有构造方法,表示的是互联网协议(ip)地址
常用方法:
public static InetAddress getByName(String host)throws UnknownHostException
在给定主机名的情况下确定主机的 IP 地址
Inetaddress address=Inetaddress.getByName("ip地址或者主机名");
public String getHostName()获取此 IP 地址的主机名。
String ip=address.getHostName();
DatagramSocket()
构造数据报套接字并将其绑定到本地主机上任何可用的端口。
public DatagramSocket(int port)
创建一个UDP Socket对象
DatagramPacket(byte[] buf, int length)
构造 DatagramPacket,用来接收长度为 length 的数据包。
DatagramPacket(byte[] buf, int length, InetAddress address, int port)
构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
一个类没有构造方法:
(1)该类的成员变量及方法都是静态的
(2)单例模式
(3)该类中某些静态方法返回了该类的示例
UDP开发步骤:
(发送端)
1)创建UDP协议发送端的Socket对象
2)创建数据报包:通过这个数据包将数据发送到接收端
3)调用UDP协议发送端发送的方法
4)关闭资源
(接收端)
* 1)创建接收端的Socket对象
* 2)创建一个数据报包接收发送端发送来的数据报包(接收容器)
* 3)接收数据,调用DataScoket类中的接收的方法来接收数据包
* 4)解析数据报包里面的实际数据,显示在控制台上
* 5)关闭资源
UDP编程代码示例:
发送端;
public class Send {
public static void main(String[] args) throws IOException {
DatagramSocket ds = new DatagramSocket();
InetAddress address = InetAddress.getByName("192.168.1.155");
byte[] buffer = "UDP I am coming".getBytes();
DatagramPacket dp = new DatagramPacket(buffer, buffer.length, address, 12345);
ds.send(dp);
ds.close();
}
}
UDP编程代码示例;
接收端:
public class Receive {
public static void main(String[] args) throws IOException {
DatagramSocket ds = new DatagramSocket(12345);
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
ds.receive(dp);
byte[] data = dp.getData();
int length = dp.getLength();
System.out.println(new String(data, 0, length));
}
}
二:TCP编程
客户端常用方法
Socket(InetAddress address, int port)
创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
void close()
关闭此套接字。
InputStream getInputStream()
返回此套接字的输入流。
OutputStream getOutputStream()
返回此套接字的输出流。
void shutdownOutput()//(形象理解)该方法在发送数据时候作为结束标志一样使用
禁用此套接字的输出流。
服务器端常用方法
ServerSocket(int port)
创建绑定到特定端口的服务器套接字。
Socket accept()
侦听并接受到此套接字的连接。
void close()
关闭此套接字。
InetAddress getInetAddress()
返回套接字连接的地址。
TCP编程开发步骤:
(客户端)
1)创建客户端的socket对象 (客户端套接字流的形式)
2)获取通道的内流(输出流)
3)使用输出流对象写数据
4)关闭客户端的Socket对象
(服务器端)
1)创建服务器端的socket对象,指定端口
2)服务器端需要监听客户端的连接
3)获取通道内的输入流
4)将数据获取到并显示到控制台
5)关闭服务器端的socket资源
//客户端
public class Client {
public static void main(String[] args) throws Exception {
Socket s=new Socket("192.168.1.155", 12345);
OutputStream os = s.getOutputStream();
os.write("Tcp I am Coming".getBytes());
s.close();
}
}
//服务器端
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket ss=new ServerSocket(12345);
Socket s=ss.accept();
InputStream is = s.getInputStream();
byte[] buf=new byte[1024];
is.read(buf);
System.out.println(new String(buf,0,buf.length));
}
}