1.InetAddress的应用

import java.util.List;
import java.math.BigDecimal;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.LinkedList;
import java.util.Scanner;
import java.util.Set;
import java.util.Stack; import javax.naming.spi.DirStateFactory.Result; import org.omg.PortableInterceptor.DISCARDING; import java.util.Map;
import java.util.Queue;
/**
* InetAddress类
* @author 16114
*
*/
public class Main{
public static void main(String[] args) {
try {
InetAddress address = InetAddress.getLocalHost();
System.out.println("计算机名:" + address.getHostName());
System.out.println("IP地址:" + address.getHostAddress());
byte[] bytes = address.getAddress();
System.out.println("字节数组形式的IP:" + Arrays.toString(bytes));
System.out.println(address);
} catch (UnknownHostException e) {
e.printStackTrace();
}
try {
InetAddress address2 = InetAddress.getByName("Roni");
System.out.println(address2.getHostName());
System.out.println(address2.getHostAddress());
} catch (UnknownHostException e) {
e.printStackTrace();
} }
}

2.URL

import java.util.List;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.LinkedList;
import java.util.Scanner;
import java.util.Set;
import java.util.Stack; import javax.naming.spi.DirStateFactory.Result; import org.omg.PortableInterceptor.DISCARDING; import java.util.Map;
import java.util.Queue;
/**
* URL类
* @author 16114
*
*/
public class Main{
public static void main(String[] args) { try {
URL url = new URL("http://www.baidu.com");
try {
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();
} catch (IOException e) {
e.printStackTrace(); } } catch (MalformedURLException e) {
e.printStackTrace();
} }
}

3.客户端向服务器端的通信

Server

package com.zrl.thread;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner; /**
* 基于TCP协议的Socket协议
* 服务端
* @author 16114
*
*/
public class Server {
public static void main(String[] args) {
//1.创建一个服务器端Socket,即ServerSocket,指定绑定的端口
try {
ServerSocket serverSocket = new ServerSocket(8888);
//2.调用accept()方法开始监听,等待客户端的连接
System.out.println("***服务器即将启动,等待客户端的链接***");
Socket socket = serverSocket.accept();
//3.获取输入流,并读取客户端信息
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String info = null;
while((info=br.readLine())!=null) {
System.out.println("我是服务器,客户端说:" + info);
}
socket.shutdownInput();
//4.关闭相关资源
br.close();
isr.close();
is.close();
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

Client

package com.zrl.thread;

import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException; public class Client {
public static void main(String[] args) {
//1.创建客户端Socket,指定服务器端地址和端口
Socket socket;
try {
socket = new Socket("localhost", 8888);
//2.获取输出流,向服务器发送消息
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os);//将输出流包装为打印流
pw.write("用户名:admin;密码:123");
pw.flush();
socket.shutdownInput();
//3.关闭资源
pw.close();
os.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} }
}

一个服务端,多个客户端

Server.java

package com.zrl.thread;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner; /**
* 基于TCP协议的Socket协议
* 服务端
* @author 16114
*
*/ public class Server {
public static void main(String[] args) {
//1.创建一个服务器端Socket,即ServerSocket,指定绑定的端口
try {
ServerSocket serverSocket = new ServerSocket(8888);
//2.调用accept()方法开始监听,等待客户端的连接
System.out.println("***服务器即将启动,等待客户端的链接***");
Socket socket = null;
//记录客户端的数量
int cnt = 0;
//循环监听等待客户端的连接
while(true) {
//调用accept()方法开始监听,等待客户端的连接
socket = serverSocket.accept();
//创建一个新线程
ServerThread serverThread = new ServerThread(socket);
//启动线程
serverThread.start();
cnt++;
System.out.println("客户端的数量:" + cnt);
InetAddress address = socket.getInetAddress();
System.out.println("当前客户端的IP:" + address.getHostAddress());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

Client.java

package com.zrl.thread;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException; public class Client {
public static void main(String[] args) {
//1.创建客户端Socket,指定服务器端地址和端口
Socket socket;
try {
socket = new Socket("localhost", 8888);
//2.获取输出流,向服务器发送消息
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os);//将输出流包装为打印流
pw.write("用户名:admin; 密码:456");
pw.flush();
socket.shutdownOutput();
//3.获取输入流并且读取服务器端的响应信息
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String info = null;
while((info=br.readLine())!=null) {
System.out.println("我是客户端,服务端说:" + info);
}
//4.关闭资源
br.close();
is.close();
pw.close();
os.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} }
}

ServerThread.java

package com.zrl.thread;
/**
* 服务器端线程处理类
* @author 16114
*
*/ import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket; public class ServerThread extends Thread {
//和本线程相关的Socket
Socket socket = null;
public ServerThread(Socket socket) {
this.socket = socket;
}
//线程执行的操作,响应客户端的请求
@Override
public void run() {
//获取输入流,并读取客户端信息
InputStream is=null;
InputStreamReader isr=null;
BufferedReader br=null;
OutputStream os =null;
PrintWriter pw = null;
try {
is = socket.getInputStream();
isr = new InputStreamReader(is);
br = new BufferedReader(isr);
String info = null;
while((info=br.readLine())!=null) {
System.out.println("我是服务器,客户端说:" + info);
}
socket.shutdownInput();
//获取输出流,响应客户端的请求
os = socket.getOutputStream();
pw = new PrintWriter(os); //包装为打印流
pw.write("欢迎您!");
pw.flush(); //调用flush将缓冲输出 } catch (IOException e) {
e.printStackTrace();
}finally {//关闭相关资源
try {
if(pw!=null) pw.close();
if(os!=null) os.close();
if(br!=null) br.close();
if(isr!=null) isr.close();
if(is!=null) is.close();
if(socket!=null) socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

Java网络编程一的更多相关文章

  1. Java网络编程一:基础知识详解

    网络基础知识 1.OSI分层模型和TCP/IP分层模型的对应关系 这里对于7层模型不展开来讲,只选择跟这次系列主题相关的知识点介绍. 2.七层模型与协议的对应关系 网络层   ------------ ...

  2. Java网络编程之TCP、UDP

    Java网络编程之TCP.UDP 2014-11-25 15:23 513人阅读 评论(0) 收藏 举报 分类: java基础及多线程(28) 版权声明:本文为博主原创文章,未经博主允许不得转载.   ...

  3. Java网络编程之UDP

    Java网络编程之UDP 一.C/S架构中UDP网络通信流程 ①创建DatagramSocket与DatagramPacket对象 ②建立发送端,接收端 ③建立数据包 ④调用Socket的发送.接收方 ...

  4. Java网络编程之URLConnection

    Java网络编程之URLConnecton 一.URLConnection简介 URLConnection是一个抽象类,表示指向URL指定资源的活动连接.URLConnection有两个不同但相关的用 ...

  5. Java网络编程之URL和URI

    Java网络编程之URL与URI 一.URL与URI简介 URI = Universal Resource Identifier 统一资源标志符 URL = Universal Resource Lo ...

  6. Java网络编程之InetAddress浅析

    Java网络编程之InetAddress浅析 一.InetAddress综述 IP地址是IP使用的32位(IPv4)或者128位(IPv6)位无符号数字,它是传输层协议TCP,UDP的基础.InetA ...

  7. Java网络编程之TCP

    Java网络编程之TCP ​ TCP主要需要两个类:Socket和ServerSocket,Socket是客户端连接服务器时创建,参数需要指定服务器的ip和端口,ServerSocket是服务器端创建 ...

  8. java网络编程之TCP通讯

    java中的网络编程之TCP协议的详细介绍,以及如何使用,同时我在下面举2例说明如何搭配IO流进行操作, /* *TCP *建立连接,形成传输数据的通道: *在连接中进行大数据量传输: *通过三次握手 ...

  9. java网络编程基础——TCP网络编程一

    基于TCP协议的网络编程 TCP/IP协议是一种可靠的网络协议,它的通信的两端各自建立一个Socket,从而在通信的两端之间形成网络虚拟链路. Java使用Socket对象来代表两端的通信端口,并通过 ...

随机推荐

  1. [LeetCode] 17. Letter Combinations of a Phone Number ☆☆

    Given a digit string, return all possible letter combinations that the number could represent. A map ...

  2. [洛谷P2596] [ZJOI2006]书架

    洛谷题目链接:书架 题目描述 小T有一个很大的书柜.这个书柜的构造有些独特,即书柜里的书是从上至下堆放成一列.她用1到n的正整数给每本书都编了号. 小T在看书的时候,每次取出一本书,看完后放回书柜然后 ...

  3. 常见的Shell

    上面提到过,Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本. Unix/Linux上常见的Shell脚本解释器有bash.sh.csh.ksh等,习惯上把它们称作一种Shell.我们常说 ...

  4. 使用.net core abp framework

    abp是一个有用的框架,包含许多功能,可以用来作为脚手架. 直接在官方网站上输入相应的工程名称,选择对应的版本就会下载对应的版本..net core 版本的可以使用后端框架部分来做api,包含了常用框 ...

  5. Http跨域时候预检没通过的几种原因

    网上大多数涉及的原因(直接复制粘帖): CORS把HTTP请求分成两类,不同类别按不同的策略进行跨域资源共享协商. 1. 简单跨域请求. 当HTTP请求出现以下两种情况时,浏览器认为是简单跨域请求: ...

  6. 多表数据转化器MTDC

    需求 根据配置文件的映射规则,将一种模型和数据映射成另外一种模型和数据.如图: 其中,a1,b1,c1,d1为表主键,关系:A.a1=B.b1=C.c2=D.d1 解决思路 解析模型配置文件,将每个转 ...

  7. 【Python学习笔记】异常处理try-except

    Python异常处理 我们一般使用try-except语句来进行异常处理. 使用except Exception as err可以统一捕捉所有异常,而也可以分开处理单个异常. # 分开捕捉单个异常 t ...

  8. 网站服务器压力Web性能测试(4):服务器压力Web性能测试小结

    1.Apache Bench,Webbench,http_load对网站压力Web性能进行测试时,为了得到更加客观和准确的数值,应该从远程访问.局域网访问和本地等多个方面进行全方位的测试.一般用127 ...

  9. SAE如何使用Git

    了解Git及远程git仓库 请先看博文<Git入门及上传项目到github中>,弄懂了之后我相信我下面说的就相当于废话了. SAE的git远程仓库就相当于github. 向SAE的远程仓库 ...

  10. MyBatis批量插入数据(MySql)

    由于项目需要生成多条数据,并保存到数据库当中,在程序中封装了一个List集合对象,然后需要把该集合中的实体插入到数据库中,项目使用了Spring+MyBatis,所以打算使用MyBatis批量插入,应 ...