Socket编程(一)

来源:互联网 发布:网络推广公司赚钱吗 编辑:程序博客网 时间:2024/04/29 16:34

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();
}
}
}


}