java——网络编程
来源:互联网 发布:李小璐的淘宝店铺 编辑:程序博客网 时间:2024/06/05 00:19
/** * @author xiexialing * @date 2017年4月25日 下午6:47:56 * @version 1.0 */package internet;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;public class Internet {}//java 网络编程//网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络链接。//java.net包中j2se的API包含有类和接口,他们提供低层次的通信细节。你可以直接使用这些类和接口,来专注解决问题,而不是关注通信细节。//java.net 保重提供了两种常见的网络协议的支持://TCP:TCP是传输控制协议,他保障了两个应用程序之间的可靠通信。通常用于互联网协议,被称为TCP/IP。//UDP:UDP是用户数据协议的缩写,一个无连接的协议。提供了应用程序之间要发送的数据的数据包。//本教程主要讲解以下两个主题。//Socket编程:这事是用最广泛的网络概念,它已被解释得非常详细。//URL处理:...//Scoket编程//套接字使用TCP提供了两台电脑时间的通信机制。客户端程序创建一个套接字,并尝试连接服务器的套接字。//当建立连接是,服务器创建一个Socket对象。客户端额服务器现在可以通过对Socket对象的写如何读取来进行通信。//java.net.Socket类代表一个套接字,并且java.net.ServerSocket类为服务器提供了一种监听客户端,并与他们建立连接的机制。//以下步骤在两台计算机之间使用套接字建立TCP连接时会出现://服务器实例化一个ServerSocket类的accept()方法,该方法将一直等待,知道客户端连接到服务器上给定的端口。//服务器正在等待是,一个客户端实例化一个Socket对象,指定服务器名称和端口号来请求连接。//Socket类的构造函数试图将客户端连接到指定的服务器和端口。如果通信被建立,则客户端创建一个Socket对象能够与服务器进行通信。//在服务器端,accept()方法返回服务器上一个新的socket的引用,该socket链接到客户端的socket。//连接建立后,通过使用I/O流进行通信,每一个socket都有一个输入流和输出流,客户端的输出流连接到服务器的输入流。//TCP是一个双向的通信协议,因此数据可以通过两个数据流在同一时间发送。//ServerSocket类的方法//服务器应用层序通过使用java.net.ServerSocket类以获取一个端口,并且侦听客户端的请求。//ServerSocket 类有四个构造方法://序号方法描述//1public ServerSocket(int port) throws IOException//创建绑定到特定端口的服务器套接字。//2public ServerSocket(int port, int backlog) throws IOException//利用指定的 backlog 创建服务器套接字并将其绑定到指定的本地端口号。//3public ServerSocket(int port, int backlog, InetAddress address) throws IOException//使用指定的端口、侦听 backlog 和要绑定到的本地 IP 地址创建服务器。//4public ServerSocket() throws IOException//创建非绑定服务器套接字。//创建非绑定服务器套接字。 如果 ServerSocket 构造方法没有抛出异常,就意味着你的应用程序已经成功绑定到指定的端口,并且侦听客户端请求。//这里有一些 ServerSocket 类的常用方法://序号方法描述//1public int getLocalPort()// 返回此套接字在其上侦听的端口。//2public Socket accept() throws IOException//侦听并接受到此套接字的连接。//3public void setSoTimeout(int timeout)// 通过指定超时值启用/禁用 SO_TIMEOUT,以毫秒为单位。//4public void bind(SocketAddress host, int backlog)//将 ServerSocket 绑定到特定地址(IP 地址和端口号)。//Socket类的方法//java.net.Sockete类代表客户端和服务器都用来互相沟通的套接字。客户端要获取一个Socket对象通过实例化,而服务器的一个Socket对象则通过accpet()的返回值。//Socket 类有五个构造方法.//序号方法描述//1public Socket(String host, int port) throws UnknownHostException, IOException.//创建一个流套接字并将其连接到指定主机上的指定端口号。//2public Socket(InetAddress host, int port) throws IOException//创建一个流套接字并将其连接到指定 IP 地址的指定端口号。//3public Socket(String host, int port, InetAddress localAddress, int localPort) throws IOException.//创建一个套接字并将其连接到指定远程主机上的指定远程端口。//4public Socket(InetAddress host, int port, InetAddress localAddress, int localPort) throws IOException.//创建一个套接字并将其连接到指定远程地址上的指定远程端口。//5public Socket()//通过系统默认类型的 SocketImpl 创建未连接套接字//当 Socket 构造方法返回,并没有简单的实例化了一个 Socket 对象,它实际上会尝试连接到指定的服务器和端口。//下面列出了一些感兴趣的方法,注意客户端和服务器端都有一个 Socket 对象,所以无论客户端还是服务端都能够调用这些方法。//序号方法描述//1public void connect(SocketAddress host, int timeout) throws IOException//将此套接字连接到服务器,并指定一个超时值。//2public InetAddress getInetAddress()// 返回套接字连接的地址。//3public int getPort()//返回此套接字连接到的远程端口。//4public int getLocalPort()//返回此套接字绑定到的本地端口。//5public SocketAddress getRemoteSocketAddress()//返回此套接字连接的端点的地址,如果未连接则返回 null。//6public InputStream getInputStream() throws IOException//返回此套接字的输入流。//7public OutputStream getOutputStream() throws IOException//返回此套接字的输出流。//8public void close() throws IOException//关闭此套接字。//InetAddress 类的方法//这个类表示互联网协议(IP)地址。下面列出了 Socket 编程时比较有用的方法://序号方法描述//1static InetAddress getByAddress(byte[] addr)//在给定原始 IP 地址的情况下,返回 InetAddress 对象。//2static InetAddress getByAddress(String host, byte[] addr)//根据提供的主机名和 IP 地址创建 InetAddress。//3static InetAddress getByName(String host)//在给定主机名的情况下确定主机的 IP 地址。//4String getHostAddress() //返回 IP 地址字符串(以文本表现形式)。//5String getHostName() // 获取此 IP 地址的主机名。//6static InetAddress getLocalHost()//返回本地主机。//7String toString()//将此 IP 地址转换为 String。//Socket 客户端实例class GreetingClient{public void go(){try {Socket client = new Socket("192.168.2.109", 5000);OutputStream outToServer = client.getOutputStream();DataOutputStream out = new DataOutputStream(outToServer);out.writeUTF("Hello from " + client.getLocalSocketAddress());InputStream inFromServer = client.getInputStream();DataInputStream in = new DataInputStream(inFromServer);System.out.println("Server says" + in.readUTF());client.close();} catch (IOException e) {e.printStackTrace();}}}//Socket服务器实例class GreetingServer extends Thread{private ServerSocket serverSocket;public GreetingServer( int port){try {serverSocket = new ServerSocket(5000);serverSocket.setSoTimeout(10000);} catch (IOException e) {e.printStackTrace();}}public void run(){while(true){try {Socket sock = serverSocket.accept();DataInputStream in = new DataInputStream(sock.getInputStream());System.out.println(in.readUTF());DataOutputStream out = new DataOutputStream(sock.getOutputStream());out.writeUTF("thank you for connection to");sock.close();} catch (IOException e) {e.printStackTrace();}}}}
0 0
- <java——网络编程>
- JAVA——网络编程
- Java——网络编程
- Java——网络编程
- java——网络编程
- Java基础—网络编程
- java网络编程—Reactor
- 黑马程序员——Java网络编程
- 黑马程序员——java网络编程
- 黑马程序员——java网络编程
- Java网络编程——TCP介绍
- JavaSE——Java网络编程
- Java基础——网络编程
- Java基础(十三)——网络编程
- JAVA基础——网络编程
- 黑马程序员——JAVA 网络编程
- Java基础——网络编程
- 黑马程序员——Java网络编程
- web回顾(4.25)
- oracle执行update和insert语句卡住不动
- 深入理解C++动态内存管理:malloc/free和new/delete的区别和联系
- c++: dynamic_cast详解
- 迷宫
- java——网络编程
- 剑指offer_面试题10_二进制中1的个数(位运算)
- github+hexo搭建个人博客
- flannel 实战与源码分析(四)
- Android中样式
- 淘宝搜索分析系统Pora2的应用之HBase高并发读写性能优化
- POJ 1077 Eight && HDU 1043 Eight 八数码问题(A*算法)
- 51nod 2级算法题-1428
- 1Vue + Jwt + SpringBoot + Ldap 完成登录认证