黑马程序员——网络通信
来源:互联网 发布:系统优化的方法 编辑:程序博客网 时间:2024/04/29 09:39
<a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>
1、数据封包
1) 应用层 \\javaWeb开发
封装数据加标识(FTP|HTTP)
2) 传输层 \\网络编程
TCP|UDP
3) 网际层 \\网络编程
IP(数据要往哪里输出的网络设备的IP地址)
4) 主机至网络层
2、传输三要素
1) IP地址
IPV4:一段一字节,共四段
225.225.225.225
本机回环地址:127.0.0.1
测试网卡:ping 127.0.0.1
例:
InetAddress ia=InetAddress.getLocalHost();
\\本地主机IP地址
InetAddress ia=InetAddress.getByName("127.0.0.1");
ia.getHostAddress(); \\IP地址字符串
ia.getHostName(); \\主机名,要解析,如果没联网,返回IP地址
2) 端口
逻辑端口:数字是0至65535
3) 通信规则
国际组织定通用协议:TCP/IP
3、传输层协议
(1) UDP
1) 数据封包不超过64k,含对方IP及端口
2) 面向无连接
3) 不可靠协议
4) 传输速度快
发送:
1) 建立UDP Socket服务
DatagramSocket ds=new DataSocket();
2) 提供数据封包
byte[] data=”数据”.getBytes();
DatagramPacket dp=new DatagramPacket
(data,data.length,InetAddress.getByteName(),端口);
3) 通过Socket服务功能将包发出
ds.send(dp);
4) 关闭资源
ds.close();
接受:
1) 定义UDP Socket服务,建端点
DatagramSocket ds=new DatagramSocket(端点);
2) 定义数据包,接收发来的数据,包中含能提取字节数据中的不同数据信息
byte[] data=new byte[1024];
DatagramPacket dp=new DatagramPacket();
3) 通过Socket的receive将数据封包
ds.receive(dp);
4) 通过数据包的对象功能,将数据取出
String ip=dp.getAddress.getHostAddress();
String data=new String(dp.getData(),0,dp.getLength());
int port=dp.getPort();
5) 关闭源
ds.close();
例:
class UdpSend{ public static voidmain(String[] args) throws Exception { DatagramSocket ds=newDatagramSocket(); BufferedReader br=newBufferedReader(new InputStreamReader(System.in)); String line=null; while((line=br.readLine())!=null){ if("886".equals(line)) break; byte[]data=line.getBytes(); DatagramPacket dp=newDatagramPacket (data,data.length,InetAddress.getByName("127.0.0.1"),10000); ds.send(dp); } ds.close(); }}class UdpReceive{ public static voidmain(String[] args) throws Exception { DatagramSocket ds=newDatagramSocket(10000); byte[] buf=new byte[1024*64]; DatagramPacket dp=newDatagramPacket(buf, buf.length); ds.receive(dp); Stringip=dp.getAddress().getHostAddress(); String data=newString(dp.getData(),0,dp.getLength()); int port=dp.getPort(); System.out.println(data+"————主机地址:"+ip+" 端口:"+port); }<span id="transmark"></span>}(2) TCP
1) 面向连接
2) 可靠协议
3) 传输速度低 (A在?——我在。——我知道了。)
客服端:
1) 创建Socket服务,并指定要连的主机和端口
Socket s=new Socket(“127.0.0.1”,10000);
2) 获取Socket中的输出流
OutputStream out=s.getOutputStream();
3) 数据写流中
out.write(“数据”.getBytes());
4) 关闭资源
s.close();
服务端:
1) 建立服务端的ServerSocket服务,并监听一端口
ServerSocket ss=new ServerSocket(10000);
2) 获取过来的客服端对象
Socket s=ss.accept();
3) 获取客服端读取流对象,并读取其中数据
InputStream in=s.getInputStream();
byte[] buf=new byte[1024];
int len=in.read(buf);
String data=new String(buf,0,len);
4) 关闭服务端
s.close();
ss.close();
例:tcp的传输的客户端和服务端的互访
class TcpClient{ public static voidmain(String[] args) throws Exception { Socket s=newSocket("127.0.0.1",10001); //发出 OutputStream out=s.getOutputStream(); out.write("hello,Server;l amClient".getBytes()); //接受 BufferedOutputStream out=new BufferedOutputStream (s.getOutputStream()); byte[] buf=new byte[1024]; int len=0; while((len=in.read(buf))!=-1){ String str=newString(buf,0,len); System.out.print(str); } s.close(); }} class TcpServer{ public static voidmain(String[] args) throws Exception { ServerSocket ss=newServerSocket(10001); Socket s=ss.accept(); //接受 BufferedInputStream in=newBufferedInputStream(s.getInputStream()); byte[] buf=new byte[1024]; int len=0; while((len=in.read(buf))!=-1){ String str=newString(buf,0,len); System.out.print(str); } //发出 OutputStream out=s.getOutputStream(); out.write("hello,Client;l amServer".getBytes()); ss.close(); s.close(); }}
- 黑马程序员——网络通信
- 黑马程序员——网络通信
- 黑马程序员——网络通信
- 黑马程序员—day24网络通信
- 黑马程序员-网络通信
- 黑马程序员-----网络通信
- 黑马程序员——Java 网络通信 正则表达式
- 黑马程序员——Java基础--- 网络通信
- 黑马程序员——Java之网络通信
- "黑马程序员"Java网络通信
- 黑马程序员_Socket网络通信
- 黑马程序员— 网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- SQL数据库字段数据类型说明
- EnumSet源码解析
- Notification
- Mac Retina解决gitk模糊的问题
- ViewGroup中bringToFront深入解析
- 黑马程序员——网络通信
- 获取文件大小 清理文件缓存
- 计算两条直线的交点
- 报错:1130-host ... is not allowed to connect to this MySql server 开放mysql远程连接 不使用localhost
- iPhone6s锁屏后屏幕会闪一下的分析与方案
- BZOJ 1857 SCOI 2010 传送带 三分套三分
- 10012---JavaWeb基础---JSP的9个隐含对象
- mac通过ssh连接阿里云(不需要输入密码哦)
- 可汗学院公开课:投资与估值