示例 1:从网络上获取资源
package shiyan;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class URLTest {
public static void main(String[] args) {
try {
//创建URL对象
URL url = new URL("http://www.dgut.edu.cn");
//打开url的连接
URLConnection urlConnection = url.openConnection();
//得到内容的长度
int length = urlConnection.getContentLength();
//得到输入流
InputStream in = urlConnection.getInputStream();
//以下从输入流读取资源保存到本地文件中
byte[] buffer = new byte[512];
//创建输出流对象
FileOutputStream fileOutputStream = new FileOutputStream("test.html");
int count = in.read(buffer);
while(count!=-1){
fileOutputStream.write(buffer,0,count);
//更新读取
count = in.read(buffer);
}
//关闭输入流
in.close();
//关闭输出流
fileOutputStream.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
示例 2:服务器和客户端通话
服务器代码:
package shiyan;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class TcpServer {
//选择一个端口进行开放
public static int PORT = 8080;
public static void main(String[] args) throws IOException {
//创建一个ServerSocket
ServerSocket s = new ServerSocket(PORT);
System.out.println("Started: "+s);
//创建Socket,调用ServerSocket的accept()方法等待客户端连接
//监听连接
Socket socket = s.accept();
//以下是服务器端和客户端进行数据的接受和传输
System.out.println("Connection accepted: "+socket.getLocalPort());
//创建字符读取缓冲区
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//创建PrintWriter对象向客户端发送消息
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
while(true){
String str = in.readLine();
if(str.equals("END")){
break;
}
//打印从客户端发来的消息
System.out.println("Echoing: "+str);
//向客户端回传该条信息 证明服务器已接收该信息
out.println("服务器已接收来自客户端的消息");
}
System.out.println("closing");
//将socket关闭
socket.close();
//将Serversocket关闭
s.close();
}
}
客户端代码:
package shiyan;
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class TcpClient {
public static void main(String[] args) throws IOException {
//得到本地ip地址,因为我们是通过本地来创建服务器的
InetAddress addr = InetAddress.getByName(null);
//打印本地ip地址
System.out.println("addr = "+addr);
//创建socket对象,无论是服务器还是客户端,都要创建socket对象,不同的是,服务器通过Serversocket的accept()方法来创建socket对象()
//连接服务器的8080端口
Socket socket = new Socket(addr,8080);
System.out.println("socket = "+socket);
//创建BufferedReader对象来读取来自服务器的回响
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//创建PrintWriter对象向服务器发送消息
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
//从客户端的控制台输入消息
BufferedReader sysin = new BufferedReader(new InputStreamReader(System.in));
while(true){
//获取控制台输入的内容
String str = sysin.readLine();
//将控制台输入的内容发送给服务器
out.println(str);
if(str.equals("END")){
break;
}
//获取从服务器回响的消息
String str1 = in.readLine();
//打印服务器回响的消息
System.out.println(str1);
}
System.out.println("client closing...");
socket.close();
}
}
客户端运行结果
服务器端运行结果
注意:程序启动时要先启动服务器,然后启动客户端。