黑马程序员__GUI_网络编程

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

GUI

1.事件处理就是处理用户的一个操作这个事件,在事件发生的时候程序应做出什么反应。当事件发生在哪个组件上, 哪个组件就可以说是事件源。给事件源添加一个监听器对象,监听器对象中包含若干事件处理方法。如果事件发生了,
事件处理方法就会自动执行

[java] view
plain
copy

  1. public class Demo1_Frame {
  2. public static void main(String[] args) {
  3. Frame f = new Frame();              //创建不可见窗体
  4. f.setLocation(500, 50);             //设置窗体的位置
  5. f.setSize(400, 600);                //设置窗体的宽和高
  6. f.setTitle("GUI");              //设置窗体的标题
  7. f.setLayout(new FlowLayout());          //设置布局管理器为流式布局
  8. Button b1 = new Button("按钮1");
  9. f.add(b1);
  10. f.addWindowListener(new MyWindowAdapter());
  11. f.setVisible(true);             //显示窗体
  12. }
  13. }

2.适配器

适配器就是一个类, 实现了监听器接口, 所有抽象方法都重写了, 但是方法全是空的.

目的就是为了简化程序员的操作, 定义监听器时继承适配器, 只重写需要的方法就可以了

[java] view
plain
copy

  1. class MyWindowAdapter extends WindowAdapter {
  2. public void windowClosing(WindowEvent e) {
  3. System.exit(0);                 //退出jvm虚拟机

网络编程

1.IP地址

每个设备在网络中的唯一标识

每台网络终端在网络中都有一个独立的地址,我们在网络中传输数据使用这个地址。

ipconfig:查看本机IP

ping:测试连接

本地回路地址:127.0.0.1

广播地址:255.255.255.255

IPv4:4个字节组成,4个0-255。大概42亿,30亿都在北美,亚洲4亿。2011年初已经用尽。

IPv6:8组,每组4个16进制数。子子孙孙都够用。

2.端口号

每个程序在设备上的唯一标识

每个网络程序都需要绑定一个端口号,传输数据的时候除了确定发到哪台机器上,还要明确发到哪个程序。

端口号范围从0-65535

编写网络应用就需要绑定一个端口号,尽量使用1024以上的,1024以下的基本上都被系统程序占用了。

常用端口

3.网络协议

为计算机网络中进行数据交换而建立的规则、标准或约定的集合。

UDP

面向无连接,数据不安全,速度快。不区分客户端与服务端。

TCP

面向连接(三次握手),数据安全,速度略低。分为客户端和服务端。

三次握手: 客户端先向服务端发起请求, 服务端响应请求, 传输数据。

4.Socket

通信的两端都有Socket。

网络通信其实就是Socket间的通信。

数据在两个Socket间通过IO流传输。

Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的IP和port。

5.UDP传输

1).发送

[java] view
plain
copy

  1. public class Demo1_Send {
  2. /**
  3. * 1.发送
  4. 创建DatagramSocket, 随机端口号
  5. 创建DatagramPacket, 指定数据, 长度, 地址, 端口
  6. 使用DatagramSocket发送DatagramPacket
  7. 关闭DatagramSocket
  8. * @throws IOException
  9. */
  10. public static void main(String[] args) throws IOException {
  11. String str = "黑马程序员,传智播客";
  12. DatagramSocket socket = new DatagramSocket();                           //创建Socket对象,相当于创建码头
  13. DatagramPacket packet =                                                 //创建Packet对象
  14. new DatagramPacket(str.getBytes(), str.getBytes().length, InetAddress.getByName("127.0.0.1"), 6666);
  15. socket.send(packet);
  16. socket.close();
  17. }
  18. }

2).接收

[java] view
plain
copy

  1. public class Demo1_Receive {
  2. /**
  3. * 2.接收
  4. 创建DatagramSocket, 指定端口号
  5. 创建DatagramPacket, 指定数组, 长度
  6. 使用DatagramSocket接收DatagramPacket
  7. 关闭DatagramSocket
  8. 从DatagramPacket中获取数据
  9. * @throws IOException
  10. */
  11. public static void main(String[] args) throws IOException {
  12. DatagramSocket socket = new DatagramSocket(6666);   //创建Socket对象
  13. DatagramPacket packet = new DatagramPacket(new byte[1024], 1024);//创建Packet对象
  14. socket.receive(packet);             //接收数据
  15. byte[] arr = packet.getData();              //获取数据
  16. int len = packet.getLength();           //获取有效的字节个数
  17. System.out.println(new String(arr,0,len));
  18. socket.close();
  19. }
  20. }

3).接收方获取ip和端口号

String ip = packet.getAddress().getHostAddress();

int port = packet.getPort();

6.TCP传输

1).客户端

[java] view
plain
copy

  1. public class Demo1_Client {
  2. /**
  3. *1.客户端
  4. 创建Socket连接服务端(指定ip地址,端口号)通过ip地址找对应的服务器
  5. 调用Socket的getInputStream()和getOutputStream()方法获取和服务端相连的IO流
  6. 输入流可以读取服务端输出流写出的数据
  7. 输出流可以写出数据到服务端的输入流
  8. * @throws Exception
  9. * @throws UnknownHostException
  10. */
  11. public static void main(String[] args) throws Exception {
  12. Socket socket = new Socket("127.0.0.1", 54321); //创建客户端
  13. InputStream is = socket.getInputStream();   //获取输入流
  14. OutputStream os = socket.getOutputStream(); //获取输出流
  15. byte[] arr = new byte[1024];
  16. int len = is.read(arr);             //读取服务器发送的数据
  17. System.out.println(new String(arr,0,len));
  18. os.write("IT培训到哪家".getBytes());         //将数据写给服务器
  19. socket.close();
  20. }
  21. }

2).服务端

[java] view
plain
copy

  1. public class Demo1_Server {
  2. /**
  3. * 2.服务端
  4. 创建ServerSocket(需要指定端口号)
  5. 调用ServerSocket的accept()方法接收一个客户端请求,得到一个Socket
  6. 调用Socket的getInputStream()和getOutputStream()方法获取和客户端相连的IO流
  7. 输入流可以读取客户端输出流写出的数据
  8. 输出流可以写出数据到客户端的输入流
  9. * @throws Exception
  10. */
  11. public static void main(String[] args) throws Exception {
  12. ServerSocket server = new ServerSocket(54321);  //创建服务端,绑定54321端口
  13. Socket socket = server.accept();        //接受客户端请求
  14. InputStream is = socket.getInputStream();   //获取字节输入流
  15. OutputStream os = socket.getOutputStream(); //获取字节输出流
  16. os.write("黑马程序员与传智播客".getBytes());  //将内容写给客户端
  17. byte[] arr = new byte[1024];
  18. int len = is.read(arr);             //从客户端读取数据
  19. System.out.println(new String(arr,0,len));
  20. server.close();
  21. socket.close();
  22. }
  23. }

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

兴趣是学习编程最好的老师

不积跬步,无以至千里

这辈子没办法做太多事情,所以每一件都要做到精彩绝伦。

<GUI>

1.事件处理就是处理用户的一个操作这个事件,在事件发生的时候程序应做出什么反应。当事件发生在哪个组件上, 哪个组件就可以说是事件源。给事件源添加一个监听器对象,监听器对象中包含若干事件处理方法。如果事件发生了,
事件处理方法就会自动执行

[java] view
plain
copy

  1. public class Demo1_Frame {
  2. public static void main(String[] args) {
  3. Frame f = new Frame();              //创建不可见窗体
  4. f.setLocation(500, 50);             //设置窗体的位置
  5. f.setSize(400, 600);                //设置窗体的宽和高
  6. f.setTitle("GUI");              //设置窗体的标题
  7. f.setLayout(new FlowLayout());          //设置布局管理器为流式布局
  8. Button b1 = new Button("按钮1");
  9. f.add(b1);
  10. f.addWindowListener(new MyWindowAdapter());
  11. f.setVisible(true);             //显示窗体
  12. }
  13. }

2.适配器

适配器就是一个类, 实现了监听器接口, 所有抽象方法都重写了, 但是方法全是空的.

目的就是为了简化程序员的操作, 定义监听器时继承适配器, 只重写需要的方法就可以了

[java] view
plain
copy

  1. class MyWindowAdapter extends WindowAdapter {
  2. public void windowClosing(WindowEvent e) {
  3. System.exit(0);                 //退出jvm虚拟机

<网络编程>

1.IP地址

每个设备在网络中的唯一标识

每台网络终端在网络中都有一个独立的地址,我们在网络中传输数据使用这个地址。

ipconfig:查看本机IP

ping:测试连接

本地回路地址:127.0.0.1

广播地址:255.255.255.255

IPv4:4个字节组成,4个0-255。大概42亿,30亿都在北美,亚洲4亿。2011年初已经用尽。

IPv6:8组,每组4个16进制数。子子孙孙都够用。

2.端口号

每个程序在设备上的唯一标识

每个网络程序都需要绑定一个端口号,传输数据的时候除了确定发到哪台机器上,还要明确发到哪个程序。

端口号范围从0-65535

编写网络应用就需要绑定一个端口号,尽量使用1024以上的,1024以下的基本上都被系统程序占用了。

常用端口

3.网络协议

为计算机网络中进行数据交换而建立的规则、标准或约定的集合。

UDP

面向无连接,数据不安全,速度快。不区分客户端与服务端。

TCP

面向连接(三次握手),数据安全,速度略低。分为客户端和服务端。

三次握手: 客户端先向服务端发起请求, 服务端响应请求, 传输数据。

4.Socket

通信的两端都有Socket。

网络通信其实就是Socket间的通信。

数据在两个Socket间通过IO流传输。

Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的IP和port。

5.UDP传输

1).发送

[java] view
plain
copy

  1. public class Demo1_Send {
  2. /**
  3. * 1.发送
  4. 创建DatagramSocket, 随机端口号
  5. 创建DatagramPacket, 指定数据, 长度, 地址, 端口
  6. 使用DatagramSocket发送DatagramPacket
  7. 关闭DatagramSocket
  8. * @throws IOException
  9. */
  10. public static void main(String[] args) throws IOException {
  11. String str = "黑马程序员,传智播客";
  12. DatagramSocket socket = new DatagramSocket();                           //创建Socket对象,相当于创建码头
  13. DatagramPacket packet =                                                 //创建Packet对象
  14. new DatagramPacket(str.getBytes(), str.getBytes().length, InetAddress.getByName("127.0.0.1"), 6666);
  15. socket.send(packet);
  16. socket.close();
  17. }
  18. }

2).接收

[java] view
plain
copy

  1. public class Demo1_Receive {
  2. /**
  3. * 2.接收
  4. 创建DatagramSocket, 指定端口号
  5. 创建DatagramPacket, 指定数组, 长度
  6. 使用DatagramSocket接收DatagramPacket
  7. 关闭DatagramSocket
  8. 从DatagramPacket中获取数据
  9. * @throws IOException
  10. */
  11. public static void main(String[] args) throws IOException {
  12. DatagramSocket socket = new DatagramSocket(6666);   //创建Socket对象
  13. DatagramPacket packet = new DatagramPacket(new byte[1024], 1024);//创建Packet对象
  14. socket.receive(packet);             //接收数据
  15. byte[] arr = packet.getData();              //获取数据
  16. int len = packet.getLength();           //获取有效的字节个数
  17. System.out.println(new String(arr,0,len));
  18. socket.close();
  19. }
  20. }

3).接收方获取ip和端口号

String ip = packet.getAddress().getHostAddress();

int port = packet.getPort();

6.TCP传输

1).客户端

[java] view
plain
copy

  1. public class Demo1_Client {
  2. /**
  3. *1.客户端
  4. 创建Socket连接服务端(指定ip地址,端口号)通过ip地址找对应的服务器
  5. 调用Socket的getInputStream()和getOutputStream()方法获取和服务端相连的IO流
  6. 输入流可以读取服务端输出流写出的数据
  7. 输出流可以写出数据到服务端的输入流
  8. * @throws Exception
  9. * @throws UnknownHostException
  10. */
  11. public static void main(String[] args) throws Exception {
  12. Socket socket = new Socket("127.0.0.1", 54321); //创建客户端
  13. InputStream is = socket.getInputStream();   //获取输入流
  14. OutputStream os = socket.getOutputStream(); //获取输出流
  15. byte[] arr = new byte[1024];
  16. int len = is.read(arr);             //读取服务器发送的数据
  17. System.out.println(new String(arr,0,len));
  18. os.write("IT培训到哪家".getBytes());         //将数据写给服务器
  19. socket.close();
  20. }
  21. }

2).服务端

[java] view
plain
copy

  1. public class Demo1_Server {
  2. /**
  3. * 2.服务端
  4. 创建ServerSocket(需要指定端口号)
  5. 调用ServerSocket的accept()方法接收一个客户端请求,得到一个Socket
  6. 调用Socket的getInputStream()和getOutputStream()方法获取和客户端相连的IO流
  7. 输入流可以读取客户端输出流写出的数据
  8. 输出流可以写出数据到客户端的输入流
  9. * @throws Exception
  10. */
  11. public static void main(String[] args) throws Exception {
  12. ServerSocket server = new ServerSocket(54321);  //创建服务端,绑定54321端口
  13. Socket socket = server.accept();        //接受客户端请求
  14. InputStream is = socket.getInputStream();   //获取字节输入流
  15. OutputStream os = socket.getOutputStream(); //获取字节输出流
  16. os.write("黑马程序员与传智播客".getBytes());  //将内容写给客户端
  17. byte[] arr = new byte[1024];
  18. int len = is.read(arr);             //从客户端读取数据
  19. System.out.println(new String(arr,0,len));
  20. server.close();
  21. socket.close();
  22. }
时间: 2024-10-05 04:34:06

黑马程序员__GUI_网络编程的相关文章

黑马程序员_Java网络编程

1,IP地址和InetAddress IP地址是互联网上每台计算机都有的自己的标记,IP地址分为5类,A类保留给政府,B类给中等规模的公司,C类给任何需要的人,D类用于组播,E类用于实验. A类  1.0.0.1-126.255.255.254  B类  128.0.0.1-191.255.255.254   C类  192.0.0.1-223.255.255.254  D类 244.0.0.1-239.255.255.254 E类 240.0.0.1-255.255.255.254 在以后开发

黑马程序员-Java 网络编程

--Java培训.Android培训.iOS培训..Net培训.期待与您交流!-- 一.概要 学习网络编程需要向对网络模型有一定的了解,主要需要了解的网络模型有OSI参考模型和TCP/IP参考模型,现在TCP/IP模型应用最为广泛,网络编程一般都是针对TCP/IP协议参考模型的编程.但是作为学习时,OSI的学习也是必不可少的,OSI分为七层协议,分别是:物理层.数据链路层.网络层.传输层.会话层.表示层和应用层.TCP/IP模型只有四层,分别是:网络访问层.互联网层.传输层和应用层.接下来要学习

黑马程序员_JAVASE_网络编程上

网络模型: OSI模型 TCP/IP模型 网络通信要素 ip地址 端口 通信协议 通信过程 1.找到对方IP地址 2.数据要发送到对方指定的应用程序上,为了标识这些应用程序,用唯一的数字进行标识,这些数字符号就是端口 3.定义通信规则,tcp还是udp还是其他 应用层协议 http,ftp,smtp 解析主机地址: InetAddress ia = InetAddress.getByName("www.baidu.com"); String ip = ia.getHostName();

黑马程序员------Java网络编程学习总结

Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! 网络模型: OSI参考模型 TCP/IP参考模型 网络参考模型图 网络通讯的要素: IP地址:InetAddress 网络中设备的标识 不容易记忆,可以用主机名 本地回环地址:127.0.0.1:主机名:localhost 端口号 用于标识进程的逻辑地址,不同进程的标识 有效端口:0~65535,其中0~1024为系统使用端口或保留端口 网络协议  是一种网络通讯的规则  常见协议:TCP,UDP UDP: 1

黑马程序员_网络编程

IP地址 1.IP地址的分类 A类1.0.0.0到126.0.0.0 B类128.1.0.0到191.254.0.0 C类192.0.1.0到223.255.254.0 D类224.0.0.0到239.255.255.255 E类240.0.0.0到255.255.255.254 局域网内的IP 192.168开头 本地回环地址:127.0.0.1.本机的IP地址,只要网卡工作正常,127.0.0.1 2.java.net.InetAddress 描述IP地址对象的类,没有构造方法 InetAd

黑马程序员——Java网络编程之UDP传输

网络编程 网络模型 通讯要素:InetAddress(对象):ip地址,网络中设备的标识,不可记忆,可用主机名,本地回环地址:127.0.0.1主机名localhost 端口号 传输协议:UDP,将数据的源及目的封装成数据包中,不需要建立连接,每个数据包的大小限制在64K内,无连接,是不可靠协议,不需要建立连接,速度快.力求速度,不求数据的准确性.比如聊天软件,网络会议. TCP:建立连接,形成传输数据的通道,在连接中进行大数据量传输,通过三次握手完成连接,是可靠协议,必须建立连接效率稍低. S

黑马程序员 ---------- Java网络技术之 ---正则表达式 (Day06)

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ---------------------- 正则表达式 正则表达式:基本知识 1  字符,   2 字符类 , 3 预定义字符类 , 4 边界匹配器 ,5 Greedy 数量词,6 Logical 运算符 详解: 1 字符 x   字符 x \\ 反斜线字符 \0n 带有八进制值 0 的字符 n (0 <= n <= 7) \0nn 带有八进制值 0 的字符 nn (0 <= n

黑马程序员-Java面向对象编程学习总结

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- Java面向对象编程学习总结: 重要知识点总结如下: 1,抽象,封装,继承,多态是面向对象程序设计中得四个特点. 2,面向对象得软件开发大体分为:面向对象的分析,面向对象的设计,面向对象的实现. 可概括为如下过程:分析用户需求,从问题中抽

黑马程序员【网络编程之UDP协议】

UDP协议 UDP(User Datagram Protocol)也就是用户数据报协议,是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范. 提到无连接数据传输,那我们首先想到的就是不可靠,数据丢失等等,那么在我们的日常软件中,UDP协议到底都应用在什么场景上呢?举一个大家比较熟悉的例子,就是我们平时所用的聊天软件,因为我们的聊天软件所传输的数据并非是重要数据. 通过ip和端口号,我们可以实现一个小的聊天软件,有兴趣的朋友可以在局域网内通过