黑马程序员——网络编程

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


网络编程:

菜单:
MenuBar


用窗体的setMenuBar方法设置MenuBar


构造方法只有空参数的


add(Menu)将菜单添加到菜单栏


Menu


构造方法,带有一个String标签的


add(MenuItem)添加菜单条目到菜单中
  
MenuItem


构造方法,带有一个String标签的


addActionListener()添加活动的事件监听


窗体设置Bar,Bar添加Menu,Menu添加MenuItem


代码:


import java.awt.*;
import java.awt.event.*;
/*
 * 两个菜单,2个菜单条目
 */
public class MenuDemo {
public static void main(String[] args) {
Frame f = new Frame("菜单");
f.setBounds(200, 100, 500, 400);
f.setBackground(Color.gray);
f.setLayout(null);
f.setVisible(true);

//创建菜单栏 Bar
MenuBar bar = new MenuBar();
//调用窗体的setMenuBar方法
f.setMenuBar(bar);

//创建菜单,文件,编辑
Menu file = new Menu("文件");
Menu edit = new Menu("编辑");
//Menu添加到MenuBar中
bar.add(file);
bar.add(edit);

//创建MenuItem,添加到Menu中
MenuItem open = new MenuItem("打开");
MenuItem close = new MenuItem("关闭");
file.add(open);
file.add(close);

MenuItem cut = new MenuItem("剪切");
MenuItem copy = new MenuItem("拷贝");

edit.add(cut);
edit.add(copy);

open.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("菜单被执行了功能");
}
});
}
}
IP地址
IP地址,每一个接入互联网的主机的唯一身份标识,IP由4个数字段组成,每个数字段0-255  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


Java中IP地址也是对象,IP地址对象的描述类 java.net.InetAddress类


提供操作IP地址的方法。不公开构造方法,非静态的方法,需要对象


找类中的静态方法,返回本类对象的,调用非静态方法


static InetAddress getLocalHost()返回本机IP地址对象


String getHostName()返回主机名,返回String类型


String getHostAddress()返回主机对应的IP地址,返回String类型


static InetAddress getByName(String 主机名)获取到的就是主机名对应的主机的IP地址对象


端口号:


系统中的数字的标识,如果一个程序占用一个端口,别的程序将不能使用这个端口了。


0-1024系统的保留端口号, 0-65535


80端口,互联网访问默认端口号


21端口,FTP上传端口号


3306 MySQL数据库的连接端口


1521 Oracle 数据库的连接端口


1433 MS SQLServer数据库的连接端口
通信协议:


协议就是通信双方,约定俗称的内容


UDP协议


将数据,和目的封装在数据包中


不需要建立连接,面向无连接


数据限制在64KB以内


无连接,不安全可靠的协议


不需要连接,速度快


适合做即时通讯,Feiq,QQ,MSN


Socket服务:


通信工具,通信双方必须有Socket服务,手机


将你的数据,传递给Socket传输工具,将数据发送出去,接收者也是通过Socket工具接收发来的数据。


数据包,Socket服务如何建立


DategramPacket数据包对象


DataGramSocket UDP的通信工具,发送数据和接收数据


UDP的发送端:


将数据封装成数据包DategramPacket


建立通信工具DataGramSocket对象


将数据包交给工具DataGramSocket进行发送


关闭资源


DategramPacket类如何使用,找构造方法


参数1: 字节数组,参数2:数组长度,参数3:目的IP地址,参数4:接收方端口号


DataGramSocket类如何使用,找构造方法,空参


发送方法send(数据包对象)


UDP的接收端:


建立数据包对象,接收发送的数据包


建立通信工具DataGramSocket对象


将数据包交给工具DataGramSocket进行接收


将数据包进行解包拆开


关闭资源


DategramPacket类的使用,找构造方法


参数1:字节数组,参数2:长度


DataGramSocket类如何使用,找构造方法,带有1int参数的构造


int参数,写端口号,程序运行的时候Windows打开这个端口等待数据的进入


接受的方法receive(数据包)


拆包:


     将字节数组变成字符串


     DatagramPackat类中的方法 getLength()发送的有效字节数


     DatagramPackat类中的方法 getPort()发送方的端口号


     DatagramPackat类中的方法 getAddress()获取到发送方的IP地址对象InetAddress


     IP对象获取IP地址


TCP协议:


面向连接协议,形成传输通道


适合大数据传输


三次握手,建立连接,安全


建立连接,效率低


适合做安全的数据传输,下载,在线视频


IO的数据传输,都是字节流,通过Socket连接对象获取,不能自己创建


TCP的客户端:


创建连接对象Socket


通过Socket对象获取字节输出流,将数据发送到服务器


通过Socket对象获取字节输入流,读取服务器发回的数据


关闭资源


客户端的连接对象 java.net.Socket类


构造方法,两个参数,String IP,int 端口
代码:
/*
 * 实现TCP客户端
 * 连接服务器
 * 发送数据
 * 读取服务器回来的数据
 */
import java.io.*;
import java.net.*;
public class TCPClient {
public static void main(String[] args) throws Exception{
//创建连接对象Socket,传递IP,端口
//一旦运行,连接服务器了
Socket s = new Socket("127.0.0.1", 8000);
//从连接对象Socket中,获取字节输出流
OutputStream out = s.getOutputStream();
//写数据
out.write("你好TCP".getBytes());

//通过连接对象获取字节输入流,读取服务器的回来数据'
InputStream in = s.getInputStream();
byte[] bytes = new byte[10];
int len = in.read(bytes);
System.out.println(new String(bytes,0,len));
s.close();

}
}
TCP的服务器端:


建立服务器连接对象ServerSocket


获取客户端的连接对象,知道哪一个客户端和我连接的,ServerSocket类的方法accept


获取到了客户端的连接对象,可以从客户端的连接对象Socket获取对象


/*
 * TCP服务器
 */
import java.io.*;
import java.net.*;
public class TCPServer {
public static void main(String[] args) throws Exception{
//建立服务器的连接对象
ServerSocket ss = new ServerSocket(8000);
//获取客户端的连接对象,知道哪一个和我连接的Socket accept() 
Socket s = ss.accept();
//通过客户端连接对象Socket获取,字节输入流,读取客户端的数据
InputStream in = s.getInputStream();
byte[] bytes = new byte[10];
int len = in.read(bytes);
System.out.println(new String(bytes,0,len));
 
//获取字节输出流,将数据发回客户端
OutputStream out = s.getOutputStream();
out.write("行收到了".getBytes());
s.close();
ss.close();
 
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值