关于网络编程
时间:2022-04-24
本文章向大家介绍关于网络编程,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
说起网络编程,通俗的说就是Socket编程。
使用对象InetAddress,因为该对象无构造函数,故不用new对象即可使用。
获取一个已知主机名的IP地址和主机名?
实例:
InetAddress inetaddress = Inetaddress.getByName("www.taobao.com");
System.out.println("IP地址:"+inetaddress.getHostAddress());
System.out.println("主机名:"+inetaddress.getHostName());
获取本地主机的IP地址和主机名?
InetAddress inetaddress = InetAddress.getLocalhost();
System.out.println("IP地址:"+inetaddress.getHostAddress());
System.out.println("主机名:"+inetaddress.getHostName());
网络编程分为2种传输方式:UDP传输和TCP传输。
UDP传输和TCP传输的区别:
1.udp传输是面向无连接的,俩端无需建立连接就可以传输数据,是不可靠协议;将数据打包发送并且每次发送的数据包不超过64k,速度快。
2.tcp传输是面向连接的,俩端必须经过3次握手连接后才可以传输数据,是可靠协议;可进行大数据量的传输效率稍低。
【UDP传输实例】:
模拟UDP传输方式的数据发送端?
class UDPSend{
public void udpSend() throws Exception{
//第一步:创建一个UDP服务==Socket服务。通过DatagramSocket对象。
DatagramSocket ds = new DatagramSocket();
//第二步:确定数据,并封装成数据包;
//封装数据包通过DatagramPacket对象的构造函数DatagramPacket(byte[] buf, int length, InetAddress address, int port)。
byte[] date = "UDP数据发送端".getBytes(); //将一段字符串转化为字节数组
DatagramPacket dp = new DatagramPacket(date,date.length,InetAddress.getByName("192.168.0.1"),4200);
//第三步:通过创建的Socket服务,将封装好的数据包发送出去。通过send()方法。
ds.send(dp);
//第四步:关闭UDP服务。
ds.close();
System.out.println("数据发送成功。");
}
}
模拟UDP传输方式的数据接受端?
class UDPReceive{
public void udpReceive()throws Exception{
//第一步:创建一个UDP服务==Socket服务。通过DatagramSocket对象。
//但是在建立服务的同时必须要指定接受的是那个端口程序发来的数据信息。
DatagramSocket ds = new DatagramSocket(4200); //[注意:这里指定的端口号必须和发送端的端口号一致,才可以接收到数据]
//第二步:定义一个字节数组,用于存储数据包。
byte[] date = new byte[1024];
DatagramPacket dp = new DatagramPacket(date,date.length);
//第三步:通过Socket服务的receive()方法将接受到的数据包存放到定义的字节数组中。
ds.receive(dp);
//第四步:通过数据包的方法获取其中的数据信息。
String IP = dp.getAddress().getHostAddress(); //通过DatagramPacket对象提取IP地址
String str = new String(dp.getData(),0,dp.getLength()); //通过DatagramPacket对象提取被发送的数据内容
int post = dp.getPort(); //通过DatagramPacket对象提取端口号
System.out.println(IP+"___"+str+"___"+post);
//第五步:关闭资源
ds.close();
}
}
【TCP传输实例】:在进行TCP传输数据时,先要必须打开服务端,因为该传输方式是面向连接的,否则数据无法传输。
模拟TCP传输方式的客户端发送数据给服务端?
class TCPClient{
public void client()throws Exception{
//第一步:创建客户端的Socket服务,并指定目的主机地址和端口。
Socket socket = new Socket("192.168.0.1",10000);
//2第二步:为了发送数据,先获取Socket服务中的输出流对象,然后将字节数据发送出去
OutputStream out = socket.getOutputStream();
out.write("TCP传输方式.".getBytes());
//第三步:关闭服务
socket.close();
}
}
模拟服务端接受客户端发送过类的数据?
class TCPSevrer{
public void server() throws Exception{
//第一步:创建服务端的ServerSocket服务,并监听一个来自客户端程序的端口
ServerSocket serversocket = new ServerSocket(10000);
//第二步:通过服务端对象的accept方法,获取一个连接过来的客户端对象
Socket socket = serversocket.accept();
//第三步:获取客户端发送过来的数据,那么要使用客户端对象的读取流对象
InputStream in = socket.getInputStream();
byte[] buf = new byte[1024]; //创建一个字节数组,用于存储发送过来的数据
int len = in.read(buf); //利用读取流读取数据
System.out.println(new String(buf,0,len));
System.out.println(socket.getInetAddress().getHostAddress()); //打印对应的客户端IP
//第四步:关闭服务
socket.close(); //关闭客户端服务
serversocket.close(); //关闭服务端服务【这个一般是不关闭的,可选】
}
}
- 关于JSON CSRF的一些思考
- linux学习第七十篇:expect脚本同步文件,expect脚本指定host和要同步的文件,构建文件分发系统,批量远程执行命令
- linux学习第六十九篇:分发系统介绍,expect脚本远程登录,expect脚本远程执行命令,expect脚本传递参数
- linux学习第六十八篇:告警系统邮件引擎,运行告警系统
- linux学习第六十七篇:告警系统主脚本,告警系统配置文件,告警系统监控项目
- linux学习第六十六篇:shell中的函数,shell中的数组,告警系统需求分析
- linux学习第六十五篇:for循环,while循环, break跳出循环,continue结束本次循环
- linux学习第六十四篇:Shell脚本中的逻辑判断,文件目录属性判断, if特殊用法,case判断
- linux学习第六十三篇:Shell脚本介绍,Shell脚本结构和执行,date命令用法,Shell脚本中的变量
- 熔断Hystrix使用尝鲜
- 报警系统QuickAlarm之默认报警规则扩展
- PHP 面试知识梳理
- 报警系统QuickAlarm使用手册
- OpenDaylight Carbon二次开发实用指南
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- ThinkPHP5 的简单搭建和使用详解
- php中怎么执行linux命令详解
- phpMyAdmin通过密码漏洞留后门文件
- php 调用百度sms来发送短信的实现示例
- MySQL 8.0 新特性:快速加列
- php判断电子邮件是否正确办法
- 用Laravel Sms实现laravel短信验证码的发送的实现
- kubernetes 近期进展 - 1.14-1.19
- Kubernetes 1.19.0——cronjob
- php获取微信openid方法总结
- Laravel 关联模型-关联新增和关联更新的方法
- 如何解决PHP获取不到SESSION信息之一般情况
- PHP实现通过二维数组键值获取一维键名操作示例
- laravel 判断查询数据库返回值的例子
- laravel框架数据库配置及操作数据库示例