1)创建客户端的Socket对象
Socket:就是客户端的Socket
构造方法
public Socket(InetAddress address, int port)
public Socket(String host, int port):创建客户端套接字对象,并且指定端口号和ip文本形式
2)获取通道内的输出流对象
3)给服务器端写数据
4)释放资源
java.net.ConnectException: Connection refused: connect 连接被拒绝
不要先运行客户端,客户端的连接需要服务器监听到才能连接
5)方法
监听客户端的连接(阻塞方法)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
//客户端读取当前项目下的某个文本文件,服务器复制这个文件内容输出一个新的文本文件(Copy.java)
/**
2)public void shutdownOutput():通知服务器端(我没有数据了,你赶紧反馈)
*/
public class UploadClient {
public static void main(String[] args) throws IOException {
//创建客户端的Socket对象
Socket s = new Socket("192.168.10.1",11111); //当前对象创建之后,就会和服务器端建立连接通道
//封装文本文件
BufferedReader br = new BufferedReader(
new FileReader("SendDemo.java")) ;
//封装通道内的流
BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(s.getOutputStream())) ;
//读写操作
String line =null;
while((line=br.readLine())!=null) {
bw.write(line);
bw.newLine();
bw.flush();
}
//自定义的结束条件
/*bw.write("over");
bw.newLine();
bw.flush();*/
//通知服务器端,客户端的文件已经完了,赶紧给反馈
//public void shutdownOutput():
s.shutdownOutput();
//获取服务器反馈的数据
//获取通道内的字符输入流
BufferedReader brClient = new BufferedReader(
new InputStreamReader(s.getInputStream())) ;
String client = brClient.readLine() ;
System.out.println(client);
//释放资源
br.close();
s.close();
}
}
服务端:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
//客户端将文本文件中的数据,复制到服务器端输出的新的java文件中,然后服务器端要给客户端反馈数据,客户端将反馈的数据展示
public class UploadServer {
public static void main(String[] args) throws IOException {
//服务器端的Socket对象
ServerSocket ss = new ServerSocket(11111) ;
//监听
Socket s = ss.accept() ;//阻塞
//封装通道内的流
BufferedReader br = new BufferedReader(
new InputStreamReader(s.getInputStream())) ;
//封装最终要输出的文本文件
BufferedWriter bw= new BufferedWriter(new FileWriter("Copy.java")) ;
String line = null ;
while((line=br.readLine())!=null) { //阻塞 //通道内的流结束不是用null作为结束条件的
bw.write(line);
bw.newLine();
bw.flush();
}
//服务端获取通道内的输出流对象
BufferedWriter bwServer = new BufferedWriter(
new OutputStreamWriter(s.getOutputStream())) ;
//向客户端反馈
bwServer.write("文件上传成功了");
bwServer.newLine();
bwServer.flush();
//释放资源
bw.close();
s.close();
}
}
(二)反射
(1)什么是反射:
原文地址:http://blog.51cto.com/13670525/2126045