随笔 - 12,  文章 - 0,  评论 - 1,  阅读 - 3972
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();  

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

posted on   CGJ_Coco  阅读(121)  评论(0编辑  收藏  举报
编辑推荐:
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
阅读排行:
· 趁着过年的时候手搓了一个低代码框架
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· 乌龟冬眠箱湿度监控系统和AI辅助建议功能的实现

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示