java-java Socket|java爬虫/聊天室原理更新

版权声明:fromZjy QQ1045152332 https://blog.csdn.net/qq_36762677/article/details/82776083

java中的网络支持

1.InetAddress:用于标识网络上的硬件资源
2.URL:统一资源定位符 通过URL可以直接读取或写入网络上的数据
3.Sockets 使用TCP协议实现网络通信的Socket相关的类
4Datagram:使用UDP协议,将数据保存在数据报中,通过网络进行通信

InetAddress类

InetAddress类用于标识网络上的硬件资源表示互联网协议IP地址
没有构造方法,通过调用static方法获取实例

1.getLocalHost返回本地主机。

public static InetAddress getLocalHost() throws UnknownHostException

返回:本地主机的 IP 地址。
抛出:UnknownHostException - 如果找不到 host 的任何 IP 地址。
使用:

//获取实例
InetAddress address = InetAddress.getLoacalHost();
address.getHostName();//获取主机名
address.getHostAddress();//获取本机ip

2.根据计算机名/ip获取实例
InetAddress.getByName(“主机名”);
InetAddress.getByName(“IP地址”);

java.net.URL类

统一资源定位符

try{
	URL myURL = new URL("https://blog.csdn.net");
	//也可以加?的参数  和#的锚点
	URL myURL2 = new URL(myURL ,"/qq_36762677");
	myURL2.getProtocol();//获取协议名
	myURL2.getPort();//获取端口号,默认端口号返回-1
	myURL2.getHost();//获取主机
}catch(Exception e){
}

使用URL读取页面内容[java爬虫]

try{
	URL url  = new URL("https://blog.csdn.net/qq_36762677");
	//字节输入流保存内容
	InputStream is = url.openStream();
	//转为字符输入流
	InputStreamReader isr  = new InputStreamReader(is,"utf-8");
	//为字符输入流添加缓冲
	BufferedReader br = new BufferedReader(isr);
	String data = br.readLine();//读取数据
	while(data!=null){
		System.out.println(data);
		data = br.readLine();
	}
	br.close();
	isr.close();
	is.close();
}	

socket编程

  • 中文名:套接字
  • 基于TCP的网络通信
  • TCP面向连接的,可靠地,有序的,字节流方式发送数据

java中的类
客户端Socket
服务端java.net.ServerSocket

实现

服务器端:============================================================

Created with Raphaël 2.2.0 开始 创建ServerSocket对象,绑定监听端口 通过accept()方法监听客户端请求 连接建立后,通过输入流读取客户端发送的请求信息 通过输出流向客户端发送响应信息 关闭? 关闭相关资源 yes no

code:

ServerSocket serverSocket = new ServerSocket(8888);//port
Socket socket = serverSocket .accept();
InputStream is = socket.getInputStream();//字节输入流
//提高性能,变字符流
InputStreamReader isr  = new InputStreamReader(is);
//为字符输入流添加缓冲
BufferedReader br = new BufferedReader(isr);
String data = br.readLine();//读取数据
while(data!=null){
	System.out.println(data);
	data = br.readLine();
}
br.close();
isr.close();
is.close();
socket.close();
serverSocket.close();

客户端:=================================================

Created with Raphaël 2.2.0 开始 创建Socket对象,指明连接的服务器地址和端口 连接建立后,通过输出流给服务器发送请求信息 通过输入流获取服务器响应信息 关闭? 关闭相关资源 yes no

猜你喜欢

转载自blog.csdn.net/qq_36762677/article/details/82776083