黑马程序员——Java 网络通信 正则表达式
2012-07-11 11:02
411 查看
---------------------- android培训、java培训、期待与您交流! ----------------------
IP地址:InetAddress
127.0.0.1 主机默认IP
localhost
端口 0 ---65535
UDP
* 将数据及源和目的封装成数据包中,不需要建立连接
* 每个数据报的大小在限制在64k内
* 因无连接,是不可靠协议
* 不需要建立连接,速度快
TCP
* 建立连接,形成传输数据的通道。
* 在连接中进行大数据量传输
* 通过三次握手完成连接,是可靠协议
* 必须建立连接,效率会稍低
OSI Tcp/IP
应用层 表
表示层 示
会话层 层
传输层 传输层
网络层 网络层
数据链路层 主机到网络
物理层 层
OSI七层
TCP/IP五层
两个例子关于UDP TCP
import java.net.*;
class UdpSend
{
public static void main(String[] args) throws Exception
{
//1.创建udp服务,通过DatagramSocket对象
DatagramSocket ds = new DatagramSocket(8888);
//2确定数据并封装成数据包
//DatagramPacket(byte[] buf,int length,InetAddress address,int port)
byte[] buf = "udp ge men lai le".getBytes();
DatagramPacket dp =
new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.101"),10000);
//3.通过socket服务,将已有的数据包发送出去,通过send方法。
ds.send(dp);
//4关闭资源
ds.close();
}
}
/*
需求:定义一个应用程序,用于接收udp协议传输的数据并处理
定义udp的接收端
思路
1.定义udpsocket服务,通常会监听一个端口,其实就是给这个接收网络
应用程序定义数字标示。方便于明确哪些数据过来应用程序可以处理。
2.定义一个数据包,因为要存储接收到的字节数据。
因为数据包对象中有更多功能可以提取字节数据中的不同数据信息。
3.通过socket服务中的receive方法将接收到数据存入已定义好的数据包中。
4.通过数据包对象的特有功能,将这些不同的数据取出,打印在控制台上。
5.关闭资源。
*/
class UdpRece
{
public static void main(String[] args) throws Exception
{
//创建udp socket,建立端点
DatagramSocket ds = new DatagramSocket(10000);
//定义数据包,用于存储数据。
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
//通过服务的recevie方法将接收到数据存入数据包中
ds.receive(dp);
//通过数据包的方法获取其中的数据
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(),0,dp.getLength());
int port = dp.getPort();
System.out.println(ip+"::"+data+"::"+port);
ds.close();
}
}
import java.io.*;
import java.net.*;
/*
服务端和客户端互访。
需求,客户端给服务端发送数据,服务端收到后,给客户端反馈信息
*/
/*
客户端
1.建立socket服务,指定要连接的主机和端口。
2.获取socket流中的输出流,将数据写入到该流中。通过网络发送给服务端。
3.获取socket流中的输入流,将服务端反馈的数据获取到,并打印。
4.关闭客户端资源。
*/
class TcpClient2
{
public static void main(String[] args) throws Exception
{
Socket s = new Socket("192.168.1.101",10004);
OutputStream out = s.getOutputStream();
out.write("服务端你好".getBytes());
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
System.out.println(new String(buf,0,len));
s.close();
}
}
class TcpServer2
{
public static void main(String[] args) throws Exception
{
ServerSocket ss = new ServerSocket(10004);
Socket s = ss.accept();
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+" is connecting");
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
System.out.println(new String(buf,0,len));
OutputStream out = s.getOutputStream();
out.write("哥们收到,你也好".getBytes());
s.close();
ss.close();
}
}
正则表达式
专门操作字符串
1.匹配 String matches
[ b c d ] b或c 或d
[a-z] a-z之间的任意一个
[^ a b c ] 非 a b c
2.切割可以将规则封装成一个组。用()完成。组的出现都有编号。
从1开始。 想要使用已有的组可以通过 \n(n就是组的编号)的形式来获取。
3替换 String replaceAll(regex,str);如果regex中有定义组,可以在第二参数中通过$符号获取正则表达式中的已有的组
4.获取 将字符串中符合规则的子串取出
(1)正则表达式封装成对象
(2)正则对象和操作的字符串相关联
(3)关联后,获取正则匹配引擎
(4)通过引擎,对符合规则的子串进行操作。
将规则封装成对象。
Pattern p = Pattern.compile(reg);
让正则对象和要作用的字符串相关联。获取匹配器对象。
Matcher m = p.matcher(str);
boolean b = m.find();//将规则作用到字符串上,并进行符合规则的子串查找。
System.out.println(b);
System.out.println(m.group());//用于获取匹配后结果。
---------------------- android培训、java培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net/heima
IP地址:InetAddress
127.0.0.1 主机默认IP
localhost
端口 0 ---65535
UDP
* 将数据及源和目的封装成数据包中,不需要建立连接
* 每个数据报的大小在限制在64k内
* 因无连接,是不可靠协议
* 不需要建立连接,速度快
TCP
* 建立连接,形成传输数据的通道。
* 在连接中进行大数据量传输
* 通过三次握手完成连接,是可靠协议
* 必须建立连接,效率会稍低
OSI Tcp/IP
应用层 表
表示层 示
会话层 层
传输层 传输层
网络层 网络层
数据链路层 主机到网络
物理层 层
OSI七层
TCP/IP五层
两个例子关于UDP TCP
import java.net.*;
class UdpSend
{
public static void main(String[] args) throws Exception
{
//1.创建udp服务,通过DatagramSocket对象
DatagramSocket ds = new DatagramSocket(8888);
//2确定数据并封装成数据包
//DatagramPacket(byte[] buf,int length,InetAddress address,int port)
byte[] buf = "udp ge men lai le".getBytes();
DatagramPacket dp =
new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.101"),10000);
//3.通过socket服务,将已有的数据包发送出去,通过send方法。
ds.send(dp);
//4关闭资源
ds.close();
}
}
/*
需求:定义一个应用程序,用于接收udp协议传输的数据并处理
定义udp的接收端
思路
1.定义udpsocket服务,通常会监听一个端口,其实就是给这个接收网络
应用程序定义数字标示。方便于明确哪些数据过来应用程序可以处理。
2.定义一个数据包,因为要存储接收到的字节数据。
因为数据包对象中有更多功能可以提取字节数据中的不同数据信息。
3.通过socket服务中的receive方法将接收到数据存入已定义好的数据包中。
4.通过数据包对象的特有功能,将这些不同的数据取出,打印在控制台上。
5.关闭资源。
*/
class UdpRece
{
public static void main(String[] args) throws Exception
{
//创建udp socket,建立端点
DatagramSocket ds = new DatagramSocket(10000);
//定义数据包,用于存储数据。
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
//通过服务的recevie方法将接收到数据存入数据包中
ds.receive(dp);
//通过数据包的方法获取其中的数据
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(),0,dp.getLength());
int port = dp.getPort();
System.out.println(ip+"::"+data+"::"+port);
ds.close();
}
}
import java.io.*;
import java.net.*;
/*
服务端和客户端互访。
需求,客户端给服务端发送数据,服务端收到后,给客户端反馈信息
*/
/*
客户端
1.建立socket服务,指定要连接的主机和端口。
2.获取socket流中的输出流,将数据写入到该流中。通过网络发送给服务端。
3.获取socket流中的输入流,将服务端反馈的数据获取到,并打印。
4.关闭客户端资源。
*/
class TcpClient2
{
public static void main(String[] args) throws Exception
{
Socket s = new Socket("192.168.1.101",10004);
OutputStream out = s.getOutputStream();
out.write("服务端你好".getBytes());
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
System.out.println(new String(buf,0,len));
s.close();
}
}
class TcpServer2
{
public static void main(String[] args) throws Exception
{
ServerSocket ss = new ServerSocket(10004);
Socket s = ss.accept();
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+" is connecting");
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
System.out.println(new String(buf,0,len));
OutputStream out = s.getOutputStream();
out.write("哥们收到,你也好".getBytes());
s.close();
ss.close();
}
}
正则表达式
专门操作字符串
1.匹配 String matches
[ b c d ] b或c 或d
[a-z] a-z之间的任意一个
[^ a b c ] 非 a b c
2.切割可以将规则封装成一个组。用()完成。组的出现都有编号。
从1开始。 想要使用已有的组可以通过 \n(n就是组的编号)的形式来获取。
3替换 String replaceAll(regex,str);如果regex中有定义组,可以在第二参数中通过$符号获取正则表达式中的已有的组
4.获取 将字符串中符合规则的子串取出
(1)正则表达式封装成对象
(2)正则对象和操作的字符串相关联
(3)关联后,获取正则匹配引擎
(4)通过引擎,对符合规则的子串进行操作。
将规则封装成对象。
Pattern p = Pattern.compile(reg);
让正则对象和要作用的字符串相关联。获取匹配器对象。
Matcher m = p.matcher(str);
boolean b = m.find();//将规则作用到字符串上,并进行符合规则的子串查找。
System.out.println(b);
System.out.println(m.group());//用于获取匹配后结果。
---------------------- android培训、java培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net/heima
相关文章推荐
- 黑马程序员_Java学习日记第八天--TCP/UDP通信、正则表达式
- 黑马程序员 ---------- Java网络技术之 ---正则表达式 (Day06)
- 黑马程序员_java基础笔记(08)...GUI,网络编程,正则表达式
- 黑马程序员_java基础笔记(08)...GUI,网络编程,正则表达式
- 黑马程序员_java基础笔记(08)...GUI,网络编程,正则表达式
- 黑马程序员——JAVA基础之正则表达式,网络爬虫
- 黑马程序员--JavaJAVA 正则表达式 (超详细)
- 黑马程序员---JAVA基础--正则表达式(十六)
- 黑马程序员——Java String类 and 正则表达式(第七篇)
- 一. 黑马程序员—-java基础—-正则表达式
- 黑马程序员-Java基础(数组,String,StringBuffer,正则表达式)
- 黑马程序员_java正则表达式学习
- 黑马程序员java之正则表达式
- 黑马程序员------java学习笔记之正则表达式
- 黑马程序员——Java基础——正则表达式
- 黑马程序员——java学习15(毕25)——正则表达式
- 黑马程序员_毕向东JAVA基础_正则表达式
- 黑马程序员--java学习之正则表达式
- 黑马程序员——Java基础---正则表达式
- 黑马程序员java学习笔记——正则表达式、反射