HTTP 编程
IHTTPRequest.java
public interface IHTTPRequest {
/**
* 向指定 url 发送 POST 请求.
*
* @param url 链接, 必须是 http://www.xxx.com 形式
* @param param 参数, 必须是 name1=value1&name2=value2 形式
*
* @return 返回值
*/
public String post(String url, String param);
/**
* 向指定 url 发送 GET 请求.
*
* @param url 链接, 必须是 http://www.xxx.com 形式
* @param param 参数, 必须是 name1=value1&name2=value2 形式
*
* @return 返回值
*/
public String get(String url, String param);
}
HTTPRequest.java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.Date;
public class HTTPRequest implements IHTTPRequest {
public String post(String url, String param) {
String result = "";
BufferedReader in = null;
try {
String urlNameString = url + "?" + param;
URL realUrl = new URL(urlNameString);
URLConnection conn = realUrl.openConnection();
/** HTTP 协议头, user-agent 必须声明 **/
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0");
/** post 请求设置 **/
conn.setDoOutput(true);
conn.setDoInput(true);
conn.connect();
/** Buffer 包装, 大幅提高写速度 **/
in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
if (in != null) {
System.out.println(in.readLine());
System.out.println(new Date());
}
} catch (Exception e) {
System.out.println("send POST error" + e);
e.printStackTrace();
} finally {
try {
if (in != null) {
in.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return result;
}
public String get(String url, String param) {
String result = "";
BufferedReader in = null;
try {
String urlNameString = url + "?" + param;
URL realUrl = new URL(urlNameString);
URLConnection conn = realUrl.openConnection();
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0");
conn.connect();
in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
if (in != null) {
System.out.println(in.readLine());
System.out.println(new Date());
}
} catch (Exception e) {
System.out.println("send GET error!" + e);
e.printStackTrace();
} finally {
try {
if (in != null) {
in.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return result;
}
}
TCP 编程
TCP 服务器.java
public void TCPServer() {
try {
ServerSocket server = new ServerSocket(10000);
server.setSoTimeout(10000);
while(true) {
Socket socket = server.accept();
...
}
} catch (Exception e) {
e.printStackTrace();
}
}
UDP 编程
UDP 发送.java
/**
* 1. 建立 udpSocket 服务.
* 2. 提供数据, 并将数据封装到数据包中.
* 3. 通过 Socket 服务的发送功能, 将数据包发送出去.
* 4. 关闭服务资源.
*/
public void udpSend() {
try {
DatagramSocket ds = new DatagramSocket();
byte[] buf = "udp 测试".getBytes();
DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("192.168.1.116"), 10000);
ds.send(dp);
ds.close();
} catch (Exception e) {
e.printStackTrace();
}
}
UDP 接收.java
/**
* 建立 UDP Socket 服务, 确定接收数据的端口号.
* 建立一个数据包, 因为需要存储接收到的字节数据, 所以数据包对象中必须足够的功能来提取字节数据中的不同数据信息.
* 通过 Socket 服务的接收功能, 将收到的数据存入已经定义好的数据包中.
* 通过数据包对象的特有功能, 将这些不同的数据取出并输出.
* 关闭服务资源.
*/
public void udpReceive() {
try {
DatagramSocket ds = new DatagramSocket(10000);
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
ds.receive(dp);
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(), 0, dp.getLength);
int port = dp.getPort();
System.out.println(ip + "," + data + "," + port);
ds.close();
} catch (Exception e) {
e.printStackTrace();
}
}