Socket编程
一个简单的client,可以向sever发送GET命令,并得到sever返回的网页,这里以百度为例。
直接把代码拷过去运行就可以。并把sever返回的(HTML)文件保存到c盘
import java.io.*;
import java.net.*;public class Client {
public static void main(String[] args) throws IOException {
Socket clientSocket = new Socket("www.baidu.com", 80);
BufferedReader readFromSocket = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()));
PrintWriter writeToSocket = new PrintWriter(
clientSocket.getOutputStream(), true);
// PrintWriter它可以将Java的基本数据类型等数据,直接转换为系统默认编码下对应的字符,再输出
//第二个参数主要是说字节流要刷新
//如果没有第二个参数true,下面加上 writeToSocket.flush();刷新
String str = "GET / HTTP/1.0\r\n";
//str是写给sever的GET命令
writeToSocket.println(str);
// writeToSocket.flush();
String readStr = readFromSocket.readLine();
//读出sever返回的第一行文件
File f = new File("C:/test.txt");
while (readStr != null) {
System.out.println(readStr);
writeToFile(readStr, f);
readStr = readFromSocket.readLine();
}
}
/**
*
* @param String
* str 把sever的响应写入文件
*/
public static void writeToFile(String str, File f) {
BufferedOutputStream bos = null;
OutputStreamWriter writer = null;
BufferedWriter bw = null;
try {
OutputStream os = new FileOutputStream(f);
bos = new BufferedOutputStream(os);
writer = new OutputStreamWriter(bos);
bw = new BufferedWriter(writer);
bw.write(str);
bw.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}