OutputStream Socket.getOutputStream()与InputStream Socket.getInputStream()
分别返回SocketOutputStream对象和SocketInputStream对象。
OutputStream中有三个write方法:
void |
write(byte[] b) 将 b.length 个字节从指定的 byte 数组写入此输出流。 |
void |
write(byte[] b, int off, int len) 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。 |
abstract void |
write(int b) 将指定的字节写入此输出流。 |
而InputStream中有三个read方法:
abstract int |
read() 从输入流中读取数据的下一个字节。 |
int |
read(byte[] b) 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。 |
int |
read(byte[] b, int off, int len) 将输入流中最多 len 个数据字节读入 byte 数组。 |
对其中的read(byte[] b)和read(byte[] b, int off, int len)的调用要引起注意:这两个方法并不保证能够将流中的所有字节读入到数组中,今天实验室有同学遇到此类问题,发现最多只能够从流中读取:65536个字节,当使用缓冲区的时候这个数字好像会发生变化。
从一个流中读取全部的数据最可靠的方法还是用一个循环一次读取一个字节直到流的末尾。
分享到:
相关推荐
OutputStream out = socket.getOutputStream(); ObjectOutputStream objout = new ObjectOutputStream(out); // 向服务器发送信息 objout.writeObject(user); socket.shutdownOutput(); System....
import java.io.BufferedReader;...BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter out = new PrintWriter(socket.getOutputStream(),true); BufferedReader br = new Buffer
InputStream is = socket.getInputStream(); ObjectInputStream ois =new ObjectInputStream(is); // 2.获取输出流 OutputStream os = socket.getOutputStream(); ObjectOutputStream oos =new ...
dout = new DataOutputStream(socket.getOutputStream()); start(); }catch(IOException e){ System.out.println(e.getMessage()); } } public void run(){ String str; try{ System.out....
dataOut = new ObjectOutputStream(socket.getOutputStream()); listener = new Thread(this); listener.start(); } catch (IOException ioException) { ioException.printStackTrace(); } } } public ...
实验报告 实验一 Socket编程 一、实验目的 通过socket程序的编写、调试,掌握socket编程的基本方法,了解客户端与服务器端的特点,掌握并熟悉运用socket类与ServerSocket类。 实验内容 学习socket编程使用的类和接口...
PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true); out.println(message); //接收来自服务器的消息 BufferedReader ...
out=new ObjectOutputStream(socket.getOutputStream()); in=new ObjectInputStream(socket.getInputStream()); ps.writeUTF(name);//开始即传输用户名 ps.flush(); setTitle("用户...
reader=new BufferedReader(new InputStreamReader(socket.getInputStream())); writer=new PrintWriter(socket.getOutputStream(), true); String msg;//从输出流获取信息 while((msg=reader.readLine())!=null...
sk.getOutputStream()); // 利用网络输出流将文件传到客户端 边读边发送 int len=0; byte[] buff = new byte[1024]; while((len=fis.read(buff))!=-1){ os.write(buff, 0, len); os.flush(); } } ...
OutputStream outStream = socket.getOutputStream(); String head = "Content-Length="+ file.length() + ";filename="+ file.getName() + ";sourceid="+ (sourceid==null? "" : sourceid)+"\r\n"; ...
OutputStream oStream = socket.getOutputStream(); DataOutputStream dataOutputStream = new DataOutputStream(oStream); dataOutputStream.writeUTF("Hello"); } catch (UnknownHostException e) { ...
writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream(),"gbk")); reader = new BufferedReader(new InputStreamReader( socket.getInputStream(),"gbk")); Message msg=new ...
Socket socket = accept(); while (true) { new ServerReaderThread(socket); new ServerWriterThread(socket); } } finally { close(); } } public static void main(String[] args) ...
br=new BufferedReader(new InputStreamReader(s.getInputStream())); str = br.readLine(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return str; } }
out=new DataOutputStream(socket.getOutputStream()); } catch (IOException ee) { 提示条.setText("连接失败"); } if(socket!=null) { InetAddress address=socket.getInetAddress(); 提示条.setText(...
上面两句就是建立缓冲并把原始的字节流转变为Unicode可以操作,而原始的字节流来源于Socket的两个方法,getInputStream()和getOutputStream()方,分别用来得到输入和输出,那么现在有了基本的模型和基本的操作工具...
rebuf = new BufferedReader(new InputStreamReader(s1.getInputStream())); String message = rebuf.readLine(); if(message.equalsIgnoreCase("exit")){ clients.remove(id); break; } ...
in=new BufferedReader(new InputStreamReader(socket.getInputStream()));//打开接受输入流 String str = in.readLine();//输出接受信息 if("ftn".equals(substring(0,3))) { patch1=Integer.parseInt(str....