JAVA学习-----网络编程

JAVA学习-----网络编程
***
一、InetAddress:多个静态方法
  • 1.getLocalHost:本机
  • 2.getByName:根据域名DNS|IP地址-->IP

*两个成员方法

  • 1.getHostAddress:返回地址
  • 2.getHostName:返回计算机名

二、端口:
* 1.区分软件 * 2.2个字节 0-65535 UDP TCP * 3.同一个协议端口不能冲突 * 4.定义端口越大越好 * InetSocketAddress: * 1.构造器 * new InetSocketAddress(地址|域名,端口); * 2.方法 * getAddress() * getPort() * getHostName() * ***
三、URL:
统一资源定位器,互联网三大基石之一(html http),区分资源 1.协议 2.域名,计算机 3.端口:默认80 4.请求资源 ***
四、UDP

UdpClient: 发送端

1、使用DatagramSocket指定端口 创建发送端

DatagramSocket client=new DatagramSocket(888);

2、准备数据 一定转成字节数组

byte[] datas=IOUtils.fileToByteArray("1.png");

3、封装成DatagramPacket包裹 ,需要制定目的地

DatagramPacket packet=new DatagramPacket(datas,0,datas.length,new  InetSocketAddress("localhost",999) ) ;

4、发送包裹send(DatagramPacket p)

client.send(packet);

5、释放资源

client.close();  

UdpServer:接收端

1、使用DatagramSocket指定端口 创建接收端

DatagramSocket server=new DatagramSocket(999);

2、准备容器 封装成DatagramPacket包裹

byte[] container=new byte[1024*60];
DatagramPacket packet=new DatagramPacket(container,0,container.length ) ;

3、阻塞式接收包裹receive(DatagramPacket p)

server.receive(packet);

4、分析数据byte[] getData();getLength()

byte[] datas=packet.getData();
int len=packet.getLength();
System.out.println(new String(datas,0,len));

5、释放资源

server.close();  

**要实现同时收发,只要引入线程,即使用面向对象封装(属性,对象,构造器):implements Runnable+定义+构造器+重写run。


五、TCP
(1)创建客户端:

1、建立连接:使用Socket创建客户端+服务的地址和端口

Socket client=new Socket("localhost",8888);

2、操作:输入输出流操作

DataOutputStream dos=new DataOutputStream(client.getOutputStream());
String data="hello";
dos.writeUTF(data);
dos.flush();

3、释放资源

dos.close();
client.close();  

(2)创建服务器:

1、指定端口:使用ServerSocket创建服务器

ServerSocket server=new ServerSocket(8888);

2、阻塞式等待连接 accept

Socket client =server.accept();

3、操作:输入输出流操作

DataInputStream dis=new DataInputStream(client.getInputStream());
String data=dis.readUTF();
System.out.println(data);

4、释放资源

dis.close();
client.close();
server.close();  

多个用户端,封装+线程=完美

原文地址:https://www.cnblogs.com/CGJ-Coco/p/9843985.html