Java URL,TCP,UDP

URL

package com.intenet.ljb;

import java.io.*;
import java.net.URL;

/**
 * URL 编程
 * 1.URL 的基本结构由 4 部分组成:<传输协议>://<主机名>:<端口号>/<文件名>
 *							例如: http://www.baidu.com:8080/helloworld/index.jsp
 * 2.一个 URL 对象生成后,其属性是不能被改变的:
 *      public String getProtocol() 获取该 URL 的协议名
 *		public String getHost() 获取该 URL 的主机名
 *		public String getPort() 获取该 URL 的端口号
 *		public String getPath() 获取该 URL 的文件路径
 *	    public String getFile() 获取该 URL 的文件名
 *		public String getRef() 获取该 URL 在文件中的相对位置
 *		public String getQuery() 获取该 URL 的查询名
 *
 */
public class URLTest {
	public static void main(String[] args) throws IOException {
		URL url = new URL("http://www.baidu.com");
		//URL 的方法 openStream():能从网络上读取数据
		BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
		int rd = br.read();
		while(rd != -1) {
			System.out.print((char)rd);//print不换行输出
			rd = br.read();
		}
		br.close();
		System.out.println("获取该 URL 的协议名:"+url.getProtocol());
		System.out.println("获取该 URL 的授权名:"+url.getAuthority());
		System.out.println("获取该 URL 的内容:"+url.getContent());
		System.out.println("获取该 URL 的主机名:"+url.getHost());
		System.out.println("获取该 URL 的文件路径:"+url.getPath());
		System.out.println("获取该 URL 的端口号:"+url.getPort());
		System.out.println("获取该 URL 的默认端口号:"+url.getDefaultPort());
		System.out.println("获取该 URL 的查询名:"+url.getQuery());
		System.out.println("获取该 URL 在文件中的相对位置:"+url.getRef());
	}
}

InetAdress

package com.intenet.ljb;

import java.net.InetAddress;
import java.net.UnknownHostException;

/**
 * InetAdress 类
 * 1.Internet 上的主机有两种方式表示地址:域名:www.baidu.com
 *										 IP 地址:202.108.35.210
 * 2.InetAddress 类对象含有一个 Internet 主机地址的域名和 IP 地址:www.atguigu.com/202.108.35.210
 * 3.域名:当在连接网络时输入一个主机的域名后,域名服务器(DNS)负责将域名转化成 IP 地址,这样才能和主机建立连接。
 * 4.获取 Internet 上主机的地址:
 * 		使用 InetAddress 类的静态方法:getByName(Strings)
 * 		将一个域名或 IP 地址传递给该方法的参数,获得一个 InetAddress 对象,该对象含有主机地址的域名
 *		和 IP 地 址,该对象用如下格式表示它包含的信息:www.atguigu.com/202.108.35.210
 *
 */
public class InetAdressTest {
	public static void main(String[] args) throws UnknownHostException {
		InetAddress adder = InetAddress.getByName("www.baidu.com");
		System.out.println("网站/IP地址:" + adder);
		System.out.println("IP地址:" + adder.getHostAddress());
		System.out.println("ip地址:" + adder.getCanonicalHostName());
		System.out.println("本机域名:" + adder.getLocalHost());
		System.out.println("获取本地IP地址:" + adder.getLoopbackAddress());
	}
}

URLConnection 类

package com.intenet.ljb;

import java.io.*;
import java.net.*;

/**
 * URLConnection 类
 * 1.表示 Java 程序和 URL 在网络上的通信连接
 * 2.当与一个 URL 建立连接时,首先要在一个 URL 对象上通过方法 openConnection() 生成对应的URLConnection 对象
 * 		URL url = new URL ("http://www.atguigu.com/index.shtml");
 * 		URLConnecton urlConnection = url.openConnection( );
 * 3.通过 URLConnection 对象获取的输入流和输出流,即可以与现有的 CGI 程序进行交互:
 * 		
 */
public class URALConnTest {
	public static void main(String[] args) throws IOException {
		URL url = new URL("http://www.baidu.com");
		URLConnection conn = url.openConnection();
		System.out.println("获取上次修改时间:"+conn.getLastModified());
		System.out.println("获取内容长度:"+conn.getContentLength());
		System.out.println("获取内容类型:"+conn.getContentType());
		System.out.println("获取内容编码:"+conn.getContentEncoding());
		System.out.println("获取数据:" + conn.getDate());
	}
}

TCP

server

package com.tcp.ljb;

import java.io.*;
import java.net.*;
import java.util.Scanner;
/*
 * 服务器
 * 1.创建端口号
 * 2.创建socket接受客户端信号
 * 3.bufferreader缓冲读入客户端数据,写入流
 * 4.readline()读入数据
 * 5.关闭,从下至上
 *
 */
/*
 * 服务器端程序的工作过程包含以下四个基本的步骤:
 *		调用 ServerSocket(int port) 创建一个服务器端套接字,并绑定到指定端口上。
 *		调用 accept(),监听连接请求,如果客户端请求连接,则接受连接,返回通信套接字。 
 *		调用 Socket 类的 getOutputStream 和 getInputStream 获取输出流和输入流,开始网络数据的发送和接收。
 *		最后关闭通信套接字。
 * 
 *
 */
//服务器
public class Serverljb {
	public static void main(String[] args) throws IOException {
		System.out.println("服务器端,等待客户端传送来的信息");
		ServerSocket ss = new ServerSocket(1512);//创建端口号
		while(true) {
			Socket s = ss.accept();//接受客户端信号
			//缓冲读入客户端数据,写入流
			BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
			String str = br.readLine();
			System.out.println(str);
			PrintWriter pw = new PrintWriter(s.getOutputStream());//输出流,发送
			System.out.println("请输入信息");
			Scanner sc =new Scanner(System.in);
			String str2 = sc.next();
			pw.println(str2);
			pw.close();
			
		}
	}
}

Client

package com.tcp.ljb;

import java.io.*;
import java.net.*;
import java.util.Scanner;
/*
 * 客户端
 * 1.socket获取主机,端口号
 * 2.printwriter字符打印流,getOutputStream()输出到服务器
 * 3.println()打印到服务器
 * 4.flush缓冲
 * 5.关闭字符打印流
 */
/*
 * IP 和 端口号:
 * 1.IP 地址标识 Internet 上的计算机,端口号标识正在计算机上运行的进程(程序)。
 * 2.端口号与 IP 地址的组合得出一个网络套接字
 * 3.应该使用 1024~65535 这些端口中的某一个进行通信,以免发生端口冲突。
 */
/*
 *套接字(Socket)接口
 *1. 7 种基本操作:
 *		连接到远程主机
 *		绑定到端口
 *		接收从远程机器来的连接请求
 *		监听到达的数据
 *		发送数据
 *		接收数据
 *		关闭连接
 * 
 */
/*
 * 客户端 Socket 的工作过程包含以下四个基本的步骤:
 * 		创建 Socket。根据指定的 IP 地址或端口号构造 Socket 类对象。如服务器端响应,则建立客户端到服务器的通信线路。
 * 		打开连接到 Socket 的输入/出流。 使用 getInputStream()方法获得输入流,使用 getOutputStream()方法获得输出流。
 * 		按照一定的协议对 Socket 进行读/写操作。通过输入流读取服务器放入线路的信息(但不能读取自己放入线路的信息),通过输出流将信息写入线程。
 * 		关闭 Socket。断开客户端到服务器的连接,释放线路
 */
public class Clientljb {
	public static void main(String[] args) throws UnknownHostException, IOException {
		Socket s = new Socket("localhost",1512);//链接主机,端口号 
		PrintWriter pr = new PrintWriter(s.getOutputStream());//字符打印,输出流
		System.out.println("已连接服务器");
		System.out.println("input content:");
		Scanner sc =new Scanner(System.in);
		String str2 = sc.next();
		pr.println(str2);
		pr.flush();
		//写入流,接收
		BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
		String str3 = br.readLine();
		System.out.println(str3);
		br.close();
	}
}

UDP

server

package com.udp.ljb;

import java.io.IOException;
import java.net.*;
/*
 * udp服务器
 *  可以多次接收客户端数据
 */
public class Serversudp {
	public static void main(String[] args) throws IOException {
		System.out.println("等待接收数组");
		DatagramSocket ds = new DatagramSocket(4545);//链接端口
		byte[] buf = new byte[1024];//缓冲作用
		DatagramPacket dp =new DatagramPacket(buf, 1024);//数据包
		while(true) {
			ds.receive(dp);//接收数据
			String str = new String(dp.getData(),0,dp.getLength());
			if(str.equals("exit")) {
				ds.close();//关闭socket
				break;//关闭服务器
			}else {
				System.out.println(str);
			}
		}
	}
}

Client

package com.udp.ljb;

import java.io.IOException;
import java.net.*;
import java.util.Scanner;
/*
 * udp客户端
 *  多次发送数据到服务器
 */
public class Clienttudp {
	public static void main(String[] args) throws IOException {
		DatagramSocket ds = new DatagramSocket(1513);//
		System.out.println("请输入发送的数据:");
		Scanner sc = new Scanner(System.in);
		while(sc.hasNext()) {
			String str = sc.next();
			if(str.equals("exit")) {
				DatagramPacket dp = new DatagramPacket(str.getBytes(), str.length(),
						InetAddress.getByName("localhost"),4545);//打包数据,主机,端口
				ds.send(dp);//发送数据
				ds.close();//关闭socket
				break;//退出
			}else {
				DatagramPacket dp = new DatagramPacket(str.getBytes(), str.length(),
						InetAddress.getByName("localhost"),4545);//打包数据
				System.out.println("再次输入:");
				ds.send(dp);//发送数据
			}
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值