import java.io.IOException
import java.io.InputStream
import java.net.MalformedURLException
import java.net.URL
import java.net.URLConnection
public class URLAccess {
public static void main(String[] args) {
try {
test()
} catch (MalformedURLException e) {
e.printStackTrace()
} catch (IOException e) {
e.printStackTrace()
}
}
public static void test() throws IOException {
URL url = new URL("http://www.baidu.com")
System.out.println("==================以下为网站内容==================")
URLConnection urlcon = url.openConnection()
int i = urlcon.getContentLength()
if (i >0) {
InputStream is = urlcon.getInputStream()
int a
while ((a = is.read()) != -1) {
System.out.print((char) a)
}
is.close()
} else {
System.out.println("响应内容为空...")
}
}
}
Java语言提供了一种强大的注释形式:文档注释。可以将源代码里的文档注释提取成一份系统的API文档。我们在开发中定义类、方法时可以先添加文档注释,然后使用javadoc工具来生成自己的API文档。
文档注释以斜线后紧跟两个星号(/**)开始,以星号后紧跟一个斜线(*/)作为结尾,中间部分全部都是文档注释,会被提取到API文档中。
自行搜索一下javadoc即可,示例如下:
1234567891011121314151617181920212223242526272829/** * 类描述 * * @author 作者 * @version 版本 */public class DemoClass { /** * 内部属性:name */ private String name /** * Setter方法 * @return name */ public String getName() { return name } /** * Getter方法 * @param name */ public void setName(String name) { this.name = name } }
Java UDP通信简单实现
1、Java实现方式
1)server端
/**
* UDPserver端
* */
public class UdpServer {
// 定义一些常量
private final intMAX_LENGTH = 1024 // 最大接收字节长度
private final intPORT_NUM = 5066 // port号
// 用以存放接收数据的字节数组
private byte[] receMsgs = new byte[MAX_LENGTH]
// 数据报套接字
private DatagramSocket datagramSocket
// 用以接收数据报
private DatagramPacket datagramPacket
public UdpServer(){
try {
/******* 接收数据流程**/
// 创建一个数据报套接字,并将其绑定到指定port上
datagramSocket = new DatagramSocket(PORT_NUM)
// DatagramPacket(byte buf[], int length),建立一个字节数组来接收UDP包
datagramPacket = new DatagramPacket(receMsgs, receMsgs.length)
// receive()来等待接收UDP数据报
datagramSocket.receive(datagramPacket)
/****** 解析数据报****/
String receStr = new String(datagramPacket.getData(), 0 , datagramPacket.getLength())
System.out.println("Server Rece:" + receStr)
System.out.println("Server Port:" + datagramPacket.getPort())
/***** 返回ACK消息数据报*/
// 组装数据报
byte[] buf = "I receive the message".getBytes()
DatagramPacket sendPacket = new DatagramPacket(buf, buf.length, datagramPacket.getAddress(), datagramPacket.getPort())
// 发送消息
datagramSocket.send(sendPacket)
} catch (SocketException e) {
e.printStackTrace()
} catch (IOException e) {
e.printStackTrace()
} finally {
// 关闭socket
if (datagramSocket != null) {
datagramSocket.close()
}
}
}
}
2)client
/***
* UDPclientClient端
***/
public class UdpClient {
private String sendStr = "SendString"
private String netAddress = "127.0.0.1"
private final intPORT_NUM = 5066
private DatagramSocket datagramSocket
private DatagramPacket datagramPacket
public UdpClient(){
try {
/*** 发送数据***/
// 初始化datagramSocket,注意与前面Server端实现的差别
datagramSocket = new DatagramSocket()
// 使用DatagramPacket(byte buf[], int length, InetAddress address, int port)函数组装发送UDP数据报
byte[] buf = sendStr.getBytes()
InetAddress address = InetAddress.getByName(netAddress)
datagramPacket = new DatagramPacket(buf, buf.length, address, PORT_NUM)
// 发送数据
datagramSocket.send(datagramPacket)
/*** 接收数据***/
byte[] receBuf = new byte[1024]
DatagramPacket recePacket = new DatagramPacket(receBuf, receBuf.length)
datagramSocket.receive(recePacket)
String receStr = new String(recePacket.getData(), 0 , recePacket.getLength())
System.out.println("Client Rece Ack:" + receStr)
System.out.println(recePacket.getPort())
} catch (SocketException e) {
e.printStackTrace()
} catch (UnknownHostException e) {
e.printStackTrace()
} catch (IOException e) {
e.printStackTrace()
} finally {
// 关闭socket
if(datagramSocket != null){
datagramSocket.close()
}
}
}
}