java中的网络连接
来源:互联网 发布:手机java编程软件 编辑:程序博客网 时间:2024/04/29 16:52
网络连接、
InetAddress
InetAddress类用来解析IP地址
import java.net.InetAddress;import java.net.UnknownHostException;public class TestInternet { public static void main(String[] args) { try { //创建本地主机的InetAddress对象。 InetAddress ia1 = InetAddress.getLocalHost(); //返回本地主机名 System.out.println(ia1.getHostName()); //返回本地主机的IP地址 System.out.println(ia1.getHostAddress()); //创建主机名为JAVA, ip为192.168.0.0的对象 byte[] ip = new byte[]{(byte) 192,(byte) 168,0,0}; InetAddress ia2 = InetAddress.getByAddress("JAVA", ip); //返回ia2主机名 System.out.println(ia2.getHostName()); //返回ia2的IP地址 System.out.println(ia2.getHostAddress()); } catch (UnknownHostException e) { e.printStackTrace(); } }}
URL
Url用来解析网址。 代表资源地址。由协议名,资源名,文件名组成。openStream() 方法打开输入流,得到数据,返回InputStream类型对象。
import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.MalformedURLException;import java.net.URL;public class TestUrl { public static void main(String[] args) { //有可能网址不存在,出现异常。 try { //URL用来解析百度网址。 URL url1 = new URL("http://www.baidu.com/"); InputStream is = url1.openStream();//返回图片的信息流。 InputStreamReader isr= new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String line= br.readLine(); while(line!=null){ System.out.println(line); line = br.readLine(); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } try { //解析图片网址 URL url2 = new URL("http://pic.nipic.com/2007-11-09/2007119122519868_2.jpg"); //建立图片文件 File fileImag = new File("D:\\11.jpg"); if(fileImag.exists()){ fileImag.createNewFile(); } byte[] b = new byte[1024]; InputStream is = url2.openStream(); OutputStream os = new FileOutputStream(fileImag); int num = is.read(b); while(num!=-1){ os.write(b, 0, num); num = is.read(b); } os.flush(); is.close(); os.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }}
TCP协议
TCP协议是建立可靠的连接进行传输的协议。他就就像打电话,一方呼叫,必须等待另一方响应后才能进行通话传输。
//服务端import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.net.ServerSocket;import java.net.Socket;import java.util.Scanner;public class TestServer { public static void main(String[] args) { try { //定义服务端 ServerSocket server = new ServerSocket(1010); System.out.println("服务启动!"); Socket socket = server.accept(); //服务端读入数据 InputStream is = socket.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); //服务端写出数据 OutputStream os =socket.getOutputStream(); OutputStreamWriter osw = new OutputStreamWriter(os); BufferedWriter bw = new BufferedWriter(osw); //捕获控制台输入 Scanner scanner = new Scanner(System.in); while(true){ String s = br.readLine(); System.out.println("客户端说:"+s); System.out.print("服务端说:"); String words = scanner.next(); bw.write(words+"\n"); bw.flush(); } } catch (IOException e) { e.printStackTrace(); } }}//客户端import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.net.Socket;import java.net.UnknownHostException;import java.util.Scanner;public class TestClient { public static void main(String[] args) { try { //定义客户端 Socket socket = new Socket("192.168.0.44", 8085); //写出数据。 OutputStream os =socket.getOutputStream(); OutputStreamWriter osw = new OutputStreamWriter(os); BufferedWriter bw = new BufferedWriter(osw); //读入数据 InputStream is = socket.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); //捕获控制台输入 Scanner scanner = new Scanner(System.in); //一直执行 while(true){ System.out.print("客户端说:"); String words = scanner.next(); bw.write(words+"\n"); bw.flush(); String s = br.readLine(); System.out.println("服务端说:"+s); } } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }}
UDP协议
UDP协议是建立不可靠的连接进行传输的协议。他就像发邮件,一方邮件发出后就不再关心是否接受者已经接受到。UDP协议是建立短连接,建立短连接后将数据打包发送, 不可靠,并且数据包大小在64K以下。
UDP程序的步骤:
发送数据包:
- 使用DatagramSocket类创建一个套接字的对象。
- 使用DatagramPacket创建一个要发送数据包的对象。
使用DatagramSocket类的send()方法发送数据包。
接收数据包:
- 使用DatagramSocket类创建一个套接字的对象。
- 使用DatagramPacket创建一个要接收数据包的对象。
使用DatagramSocket类的receive()方法接收数据包。
//Receiverimport java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;import java.util.Scanner;public class MyReceiver { public static void main(String[] args) { try { DatagramSocket receiver = new DatagramSocket(8080); DatagramSocket send = new DatagramSocket(); //定义要输入的数据流 Scanner in =new Scanner(System.in); //将数据流打包 while(true){ //接收自发送端 byte[] array = new byte[1024]; DatagramPacket packet = new DatagramPacket(array, 1024); receiver.receive(packet); byte[] data = packet.getData(); System.out.println("发送端说:"+new String(data, 0, packet.getLength())); //发送给发送端 System.out.print("发送给发送端:"); String s= in.next(); byte[] arr = s.getBytes(); DatagramPacket packet_send = new DatagramPacket(arr, arr.length,InetAddress.getByName("192.168.0.34"), 8088); send.send(packet_send); } } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }}
//sendimport java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;import java.util.Scanner;public class MySend { public static void main(String[] args) { try { //创建发送端 //创建一个DatagramSocket套接字 DatagramSocket send = new DatagramSocket(); DatagramSocket receive = new DatagramSocket(8088); Scanner in =new Scanner(System.in); while(true){ //发送给发送端 System.out.print("发送给接收端:"); String s= in.next(); byte[] array = s.getBytes(); //创建一个发送数据的数据包 DatagramPacket packet = new DatagramPacket(array, array.length,InetAddress.getByName("192.168.0.34"), 8080); send.send(packet); //接收接收端发来的数据 byte[] arr = new byte[1024]; DatagramPacket packet_receive = new DatagramPacket(arr, 1024); receive.receive(packet_receive); byte[] data = packet_receive.getData(); System.out.println("接收端说:"+new String(data,0,packet_receive.getLength())); } } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }}
0 0
- java中的网络连接
- j2me中的网络连接
- 网络连接中的心跳
- 网络中的连接设备
- Android中的网络连接
- java 网络压缩连接
- JAVA 网络长短连接
- JAVA网络连接
- 虚拟机中的LINUX连接网络
- 使用Android中的网络连接
- vmware 中的vmnet8 网络连接
- 谈谈网络中的连接设备
- unity中的网络连接NetWork
- 寻找正在连接中的网络连接
- 寻找正在连接中的网络连接
- 寻找正在连接中的网络连接,并开启网络连接的网络连接共享功能
- java中的连接池
- Java中的Http连接
- Genymotion出现unknown generic error和This may occur if you are using a proxy错误的解决方案
- 【bzoj3916】 Baltic2014 friends hash
- web.xml管理的内容
- ireport5.6使用table组件,如何用table显示javaBean数据源
- 如何做到每天写代码?
- java中的网络连接
- Linux errno 错误对照表
- 数据结构实验之二叉树的建立与遍历
- JavaScript权威指南_147_第15章_脚本化文档_15.10-其他文档特性-document.write()
- Java之集合中泛型的使用【入门篇】
- JDK和JRE的区别
- hihoCoder 1121 二分图一•二分图判定
- iOS面试题
- C++和MATLAB混合编程 mwArray 结构体传入