当前位置:首页 > 芯闻号 > 充电吧
[导读]============================ 1. IP地址   IP地址,就是每一个接入互联网的主机的唯一身份标识,IP地址   0-255组成的,分成了4段,每段0-255   IP地

============================ 1. IP地址   IP地址,就是每一个接入互联网的主机的唯一身份标识,IP地址   0-255组成的,分成了4段,每段0-255   IP地址分类:ABCDE   局域网:192.168开头   本地回环地址:127.0.0.1 每一个电脑,网卡正常工作,主机的IP就是127.0.0.1   IP地址这个事物也是对象,对IP地址对象的描述类   java.net.InetAddress   私有构造方法,静态方法返回本类对象的   static InetAddress getLocalHost() 获取本地主机IP地址对象   这个方法在哪个机器上运行,那个机器就是本地主机     InetAddress类中的两个方法 getHostAddress()通过IP地址对象,获取IP地址   InetAddress类中的两个方法 getHostName()通过IP地址对象,获取主机名   如果获取一台主机的IP或者主机名,必须先获取到一台主机的IP对象(InetAddress)   获取远程主机IP地址对象   static InetAddress getByName(String host) 参数,传递主机名,传递IP地址 /*  * 获取本地主机IP地址对象  * InetAddress类的静态方法 getLocalHost  */ import java.net.*; public class InetAddressDemo {  public static void main(String[] args)throws UnknownHostException {   InetAddress i = InetAddress.getLocalHost();   System.out.println(i);//机器名/IP地址   //获取主机名   String name = i.getHostName();   //获取IP地址   String ip = i.getHostAddress();   System.out.println(name+"..."+ip);  } }
 //=================================================== 2. 端口号   操作系统的一个数字物理标识   看成是进入或者出去操作系统的一个门牌号   我邮寄一个包裹 昌平建材城西路100号   收件:大兴黄村北路200号   端口号 0-1024操作系统保留号   最大65535   常见端口号:     80 http访问互联网的默认端口号     http://www.baidu.com:80     21 FTP数据传输端口号     8080 Javaweb服务器默认端口号     3306 MySQL数据的连接端口号     1521 Oracle数据库连接端口号     1433 MS SQLServer数据库连接端口号 //=================================================== 3. 传输协议   发送,接受两个方面约定好的内容   两个人打电话,相约晚上11点-11点30分可以通话,语音采用中文   UDP -- 面向无连接协议   通信双方不需要连接   不需要连接,不可靠,丢数据   连接效率很高   不允许传输大数据,限制在64KB以内   TCP -- 面向连接协议   通信双方需要建立连接,三次握手,效率底下   连接,安全可靠协议,不丢失数据   适合于大数据传输 //=================================================== 4. Socket服务  Socket就是为网络服务提供的一种机制  通信的两端都有Socket  提供接收和发送功能的  写功能的时候,接收还是发送的,必须有Socket服务  UDP的传输   分为发送端和接收端   发送端:     A 发送的数据封包 -- 封装数据包的类,DatagramPacket     B 将封装好的数据包,交给Socket进行发送 -- DategramSocket     C 关闭资源   接收端:     A. 接收数据包,Socket接收     B. 拆包     C. 拆包后的信息,显示出来     D. 关闭资源     DategramPacket数据包:     构造方法DatagramPacket(byte[] buf, int length, InetAddress address, int port)                               字节数据 长度 IP地址 端口号     构造方法DatagramPacket(byte[] buf, int length) 接收     int getLength() 接收数据包中,数组的有效个数     int getPort()获取发送端口号     InetAddress getAddress()返回发送端的IP地址对象    DatagramSocket发送包,接收包    构造方法,发送时候空参数的    发送方法,send(数据包)    构造DatagramSocket(int port) 接收,传递端口号    接收的方法 receive(数据包)
/*  * UDP发送端  */ import java.net.*; import java.util.Scanner; public class UDPSend {  public static void main(String[] args) throws Exception{   new Scanner(System.in).nextLine();   //将数据封装到数据包 DategramPacket   byte[] bytes = "你好UDP".getBytes();   DatagramPacket dp = new     DatagramPacket(bytes, bytes.length, InetAddress.getByName("127.0.0.1"),10000);   //创建投递服务的Socket对象,DatagramSocket   DatagramSocket ds = new DatagramSocket(8000);   //将数据包,交给Socket发送   ds.send(dp);   //关闭资源   ds.close();  } }

/*  * UDP的接收端  */ import java.net.*; public class UDPReceive {  public static void main(String[] args) throws Exception{   //创建投递服务的Socket对象   DatagramSocket ds = new DatagramSocket(10000);   //定义数据包,接收   byte[] bytes = new byte[10];   DatagramPacket dp = new DatagramPacket(bytes,bytes.length);   //Socket接收数据包   ds.receive(dp);   //获取数组中的有效个数   int length = dp.getLength();   //获取端口号   int port = dp.getPort();   //获取发送端的IP地址对象   InetAddress i = dp.getAddress();   String ip = i.getHostAddress();   //输出全部的信息   System.out.println(new String(bytes,0,length)+"..."+ip+"..."+port);   //关闭资源   ds.close();    } }
//=================================================== 5. TCP   客户端和服务器   建立连接,客户端必须连接服务器,否则程序无法运行   客户端的Socket服务,Socket   服务器端的Socket服务,ServerSocket   Socket类构造方法 Socket(String host, int port)   构造方法,一旦执行,就会去连接服务器,如果没有服务器,抛出异常    OutputStream getOutputStream() 通过Socket对象获取字节输出流    InputStream getInputStream()通过Socket对象获取字节输入流    ServerSocket类构造方法ServerSocket(int port)  Socket accept()获取客户端的连接对象,这个方法告诉服务器,是哪一个客户端连接的  客户端通过自己Socket获取字节输出流,向服务器发送数据  服务器通过客户端连接对象Socket获取字节输入流,读取客户端发送的数据  服务器通过客户端连接对象Socket获取字节输出流,向客户端发送数据  客户端通过字节的Socket对象获取字节输入流,读取服务器发回的数据

 /*  * TCP的客户端  */ import java.io.*; import java.net.*; public class TCPClient {  public static void main(String[] args)throws Exception {   //创建客户端的Socket对象   Socket s = new Socket("127.0.0.1",10000);   //将数据传输到服务器,字节输出流   OutputStream out = s.getOutputStream();   //写,字节数组   out.write("你好TCP".getBytes());     //客户端获取服务器发回的信息,字节输入流   InputStream in = s.getInputStream();   byte[] bytes = new byte[10];   int len = 0 ;   len = in.read(bytes);   System.out.println(new String(bytes,0,len));   //关闭资源   s.close();  } }


/*  * TCP服务器  */ import java.io.*; import java.net.*; public class TCPServer {  public static void main(String[] args) throws Exception{   //创建服务器的Socket服务   ServerSocket ss = new ServerSocket(10000);   //知道是哪个客户端连接的   Socket s = ss.accept();//线程等,等着客户端连接   //有了客户端对象Socket,完全可以使用客户端连接对象,获取IO流   //获取字节输入流   InputStream in = s.getInputStream();   byte[] bytes = new byte[10];   int len = 0 ;   len = in.read(bytes);   System.out.println(new String(bytes,0,len));     //服务器回客户端一个信息,谢谢收到了   OutputStream out = s.getOutputStream();   out.write("谢谢收到了".getBytes());   s.close();   ss.close();  } } //=================================================== 6. TCP的案例  键盘录入字母,发送给服务器,服务器转成大写字母,回传客户端,客户端读取服务器发回的大写字母  通过案例暴露很多问题    A. 键盘读取 OK    B. 读取到的键盘,发出去没有,OK    C. 服务器收到了吗,服务器收到了 readLine()方法线程阻塞,等着读 OK    D. 服务器大写数据发回了吗 OK    E. 客户端读取到了 OK
/*  * 转成大写客户端  */ import java.io.*; import java.net.*; public class TCPClientToUpperCase {  public static void main(String[] args) throws Exception{   //建立Socket服务   Socket s = new Socket("127.0.0.1",10000);   //读取键盘输入   BufferedReader bfr = new     BufferedReader(new InputStreamReader(System.in));     //建立字节流对象,转成字符流,读取服务器发回的大写字母   BufferedReader bfrin =     new BufferedReader(new InputStreamReader(s.getInputStream()));     //向服务器发送数据,采用打印流   PrintWriter out = new PrintWriter(s.getOutputStream(),true);   String line = null;   while((line = bfr.readLine())!=null){    if("over".equals(line))break;    out.println(line);    //将数据打印到服务器,读取服务器回来的大写    String server = bfrin.readLine();    System.out.println("大写字母是::"+server);   }   bfr.close();   s.close();  } }
/*  * 转换大写服务器  */ import java.io.*; import java.net.*; public class TCPServerToUpperCase {  public static void main(String[] args) throws Exception{   //建立服务器Socket,获取客户端连接对象   ServerSocket ss = new ServerSocket(10000);   Socket s = ss.accept();   //读取客户端的小写字母,都是文本,按行读   BufferedReader bfrin = new     BufferedReader(new InputStreamReader(s.getInputStream()));     //创建打印流对象,将大写数据,写回客户端   PrintWriter out = new PrintWriter(s.getOutputStream(),true);     String line = null;   while((line = bfrin.readLine())!=null){    if("over".equals(line))     break;     out.println(line.toUpperCase());   }   s.close();   ss.close();  } }


//=================================================== 7. TCP文本上传  将C盘上的源文件,通过TCP服务器传递到D盘upload目录中    客户端    IO读取文本文件    打印流,将文本打印到服务器    读取上传成功四个字  服务器    读取客户端的文本文件,保存到目的中(D盘)    将上传成功四个字,会给客户端    服务器停不下来  服务器读取的是Socket中的字节流null;  客户端,和服务器之间,约定一个结束标记  java工程师们很善良,定义好了结束标记  Socket类中的方法 void shutdownOutput()
/*  * TCP文本上传客户端  */ import java.io.*; import java.net.*; public class TCPCilentUpLoad {  public static void main(String[] args) throws Exception{   Socket s = new Socket("127.0.0.1", 10000);   //字符流,读取文本文件   BufferedReader bfr = new BufferedReader(new FileReader("c:\1.txt"));   //将文本使用打印流,打印到服务器   PrintWriter out = new PrintWriter(s.getOutputStream(),true);   String line = null;   while((line=bfr.readLine())!=null){    out.println(line);   }   //out.println("*&^%$#@@#$TRJHGFD&%^$#@");   s.shutdownOutput();   //读取服务器的上传成功   InputStream in = s.getInputStream();   byte[] bytes = new byte[10];   int len = in.read(bytes);   System.out.println("服务器说::"+new String(bytes,0,len));   bfr.close();   s.close();  } }


*  * 文本上传服务器  */ import java.io.*; import java.net.*; import java.util.*; public class TCPServerUpLoad {  public static void main(String[] args)throws Exception {   ServerSocket ss = new ServerSocket(10000);   Socket s = ss.accept();   //读取客户端的数据,转换流   BufferedReader bfrin = new     BufferedReader(new InputStreamReader(s.getInputStream()));   //将目的封装成File对象   File file = new File("d:\upload");   if(!file.exists())    file.mkdirs();   //封装数据目的,使用打印流   //对上传的文件名修改   String filename = "itcast"+System.currentTimeMillis()+new Random().nextInt(999999999)+".txt";   PrintWriter pw = new PrintWriter(new FileWriter(file+File.separator+filename),true);   String line = null;   while((line = bfrin.readLine())!=null){    pw.println(line);   }   //上传成功写回客户端     OutputStream out = s.getOutputStream();   out.write("上传成功".getBytes());   pw.close();   s.close();   ss.close();  } }

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

Python和Java是两种广泛应用于编程领域的高级编程语言,它们各有优劣。本文从程序设计应用、系统资源占用、高性能处理和语言特点等四方面详细介绍两种编程语言的区别。

关键字: python java 高性能处理

全世界数以百万计的工程师和科学家都在使用 MATLAB® 分析和设计改变着我们的世界的系统和产品。基于矩阵的 MATLAB 语言是世界上表示计算数学最自然的方式。

关键字: matlab入门 教学 基础知识

MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。

关键字: matlab入门 命令 基础知识

在这篇文章中,小编将为大家带来Java接口的相关报道。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。

关键字: java 接口 Interface

MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。

关键字: matlab入门 基础知识 信号处理

上海2023年2月14日 /美通社/ -- 步入2023年第一个季度,市场依然在震荡中前行。作为一家全球领先的金融科技经纪商,ATFX为了给全球客户提供具有前瞻性的分析报告,分析师团队早已密切关注金融市场动态,结合各国经...

关键字: ANTI RAM 基础知识 SIC

应该有不少小伙伴有假期打工的经历,那今天就来给公众号的读者朋友们分享一个二哥编程星球里一个球友在富士康打工 50 天的感受,相信大家看完后会深深触动的。

关键字: 物联网 java 博客

我们前面主要去学习了蓝牙开发所具备的基础知识、常用的仿真手法,那么如何去分析我们抓到的蓝牙通信包呢?不去学习蓝牙通信协议,只能把抓到的Log信息,交给能看懂的人,你也最终只能当一个测试工程师了。

关键字: 基础知识 仿真手法 蓝牙通信

(全球TMT2022年4月26日讯)The Open Group,厂商中立的技术联盟,宣布正式发布TOGAF®标准第10版,这标志着这一世界上使用最广泛的企业架构框架的开发又步入一个重要里程碑。由The Open Gr...

关键字: GROUP PEN 模块化结构 基础知识

低压差 (LDO) 稳压器的本质是通过将多余的功率转化为热量来调节电压,使该集成电路成为低功率或小 V IN至 V OUT差分应用的理想解决方案。考虑到这一点,选择合适的 LDO 和合适的封装对于最大限度地提高应用程序的...

关键字: LDO 基础知识 BSP 封装
关闭
关闭