Java网络编程
2018-08-02 05:53:53来源:博客园 阅读 ()
//java.net包中提供了专门用于网络编程的类:URL、Socket、InetAddress和DatagramSocket类等
1.URL类
使用URL创建对象的应用程序称为客户端程序;
一个URL对象包含最基本的三个部分信息:协议、地址和资源;
//协议必须是JVM支持的协议:常见的有Http、Ftp、File协议
//地址为有效IP地址或域名
//资源可以是主机上的任何一个文件
构造方法:
public URL(String spec) throws MalformedURLException
参数spec如:"http://www.baidu.com",资源默认为主页;
public URL(String protocol,String host,String file) throws MalformedURLException
方法:
InputStream openStream()
返回一个输入流,该输入流指向URL对象所包含的资源;
2.InetAddress类
方法:
static getByName(String s)
参数s为一个域名或IP地址,获得一个含有主机地址域名和IP地址的InetAddress对象;
//包含的信息格式:www.sina.com.cn/202.108.37.40
public String getHostName()
获取InetAddress对象所含的域名;
public String getHostAddress()
获取InetAddress对象所含的IP地址;
static getLocalHost()
获得一个含有本地机器域名和IP地址的InetAddress对象;
3.套接字(基于TCP通讯)
①客户端套接字(Socket类)
构造方法:
Socket(String host,int port) throws IOException
Socket类对象方法:
getInputStream()
获得一个输入流;//该输入流的源和服务器端的一个输出流的目的地相同
getOutputStream()
获得一个输出流;//该输出流的目的地和服务器端的一个输入流的源相同
getInetAddress()
客户端套接字对象调用:返回一个含有服务器端IP地址和域名的InetAddress对象;
②服务器端套接字(ServerSocket类)
构造方法:
ServerSocket(int port) throws IOException
端口被占用会发生异常;
ServerSocket类对象方法:
Socket accept() throws SocketTimeoutException
将客户端的套接字和服务器端的套接字连接起来,返回一个相连接的Socket对象(服务器端套接字对象),方法阻塞时间超过timeout触发异常;
setSoTimeout(int timeout)
设置超时值(单位:毫秒),timeout>0;
相连接的Socket对象方法:
getOutputStream()
获得一个指向客户端Socket对象输入流的输出流;
getInputStream()
获得一个指向客户端Socket对象输出流的输入流;
getInetAddress()
服务器端套接字对象调用:返回一个含有客户端IP地址和域名的InetAddress对象;
close()
关闭套接字连接;
客户端: Socket mysocket; DataInputStream in=null; DataOutputStream out=null; try{ mysocket=new Socket("127.0.0.1",2010); in=new DataInputStream(mysocket.getInputStream()); out=new DataOutputStream(mysocket.getOutputStream()); } catch(Exception e){} 服务器端: ServerSocket serverForClient=null; Socket sc=null; DataInputStream in=null; DataOutputStream out=null; try{ serverForClient=new ServerSocket(2010); } catch(IOException e){} try{ sc=serverForClient.accept(); in=new DataInputStream(sc.getInputStream()); out=new DataOutpurStream(sc.getOutputStream()); } catch(Exception e){}
③使用多线程技术实现套接字
(1)先用不带参数的Socket构造方法创建一个套接字;
(2)该套接字调用public void connect(SocketAddress endpoint) throws IOException请求和参数SocketAddress指定地址的服务器端的套接字连接;
//InetSocketAddress构造方法:InetSocketAddress(InetAddress addr,int port)
4.UDP数据报(基于UDP通讯)
//基于UDP的通信和基于TCP的通信不同,基于UDP的信息传递更快,但不提供可靠性保证。
//UDP通信的基本模式是:将数据打包进行发送和接收
(1)发送数据包(数据包的长度不要超过8192KB)
①用DatagramPacket类打包数据:
构造方法:
DatagramPacket(byte data[],int length,InetAddress,int port)
DatagramPacket(byte data[],int offset,int length,InetAddress,int port)
方法:
public int getPort()
获取该数据包目标端口;
public InetAddress getAddress()
获取该数据包的目标地址;
public byte[] getData()
返回数据包中的字节数组;
②用DatagramSocket类发送数据包:
构造方法:
DatagramSocket()
方法:
send(DatagramPacket data_pack)
(2)接收数据包
①用DatagramPacket类创建一个用于接收的数据包:
构造方法:
DatagramPack(byte data[],int length)
方法:
getPort()
获取所接收包的始发端口号;
getLength()
获取收到的数据的字节长度;
InetAddress getAddress()
获取包的始发地址;
②用DatagramSocket类接收数据包:
构造方法:
DatagramSocket(int port);
port端口必须和待接收的数据包的端口号相同;
方法:
receive(DatagramPacket pack)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash