本帖最后由 周素强 于 2012-5-8 21:14 编辑
- /*TCP字符流*//*代码功能描述:向服务端发送字符并接收服务端返回的字符*/
- class TransClient//客户端
- {
- public static void main(String[] args) throws Exception
- {
- Socket s = new Socket("192.168.1.100",10006);//建立客户端
- BufferedReader bufr =
- new BufferedReader(new InputStreamReader(System.in));//键盘输入
- BufferedReader bufIn =
- new BufferedReader(new InputStreamReader(s.getInputStream()));//获取客户端输入流
- BufferedWriter bufOut =
- new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));//获取服务端输出流
- String line = null;//定义变量存储键盘输入数据
- while((line=bufr.readLine())!=null)
- {
- if("over".equals(line))
- break;
- bufOut.write(line);//向服务端发送数据
- bufOut.newLine();//添加结束标记回车符
- bufOut.flush();
- String str = bufIn.readLine();//获取服务端传过来的大写数据
- System.out.println("Server:"+str);
- }
- bufr.close();
- s.close();
- }
- }
复制代码- /*TCP字节流*//*代码功能描述:TCP传输上传图片*/
- import java.io.*;
- import java.net.*;
- class TcpPicClient //客户端
- {
- public static void main(String[] args)throws Exception
- {
- Socket s = new Socket("192.168.1.100",10007);//定义客户端并设置要连接主机的IP和端口
- File file = new File("1.png");//定义一个文件对象
- BufferedInputStream bufi = new BufferedInputStream(new FileInputStream(file));//创建一个数据源读取流
- BufferedOutputStream bufo = new BufferedOutputStream(s.getOutputStream());//获取客户端输出流,以便将数据传送出去
- byte[] by = new byte[1024];//定义一个字节缓冲区
- int len = 0;
- while((len=bufi.read(by))!=-1)
- {
- bufo.write(by,0,len);//将读取到的数据发送给服务端
- //bufo.flush();
- }
- s.shutdownOutput();//关闭输出流向服务端发送结束标记
- bufi.close();
- BufferedReader bufr = new BufferedReader(new InputStreamReader(s.getInputStream()));//获取客户端的输入流,以便接收服务端的回复信息
- String str = bufr.readLine();//读取服务端发来的信息
- System.out.println(str);
- s.close();
- }
- }
复制代码 我有点疑惑的是操作字符流时向服务端发送数据必需得刷新,而操作字节流时就不用刷新,请问这是为什么呢?
|