server端:
在8080端口上创建服务器端->监听到来自客户端的socket连接->获得客户端的socket的输入输出流(使用BufferedReader,PrintWriter提高性能)->循环读客户端socket的消息:
每读一行,如果是“END”就退出,否则就在控制台打印出来且回传给客户端.client端:
(”127.0.0.1“,8080)上创建客户端socket,建立与server的连接,->
获得socket的输入输出流->10次循环,每向服务器写入一行消息,接着就等待从服务器回传过来的消息,且在控制台打印->
向服务器写入一行消息“END”,使服务器shutdown
在8080端口上创建服务器端->监听到来自客户端的socket连接->获得客户端的socket的输入输出流(使用BufferedReader,PrintWriter提高性能)->循环读客户端socket的消息:
每读一行,如果是“END”就退出,否则就在控制台打印出来且回传给客户端.client端:
(”127.0.0.1“,8080)上创建客户端socket,建立与server的连接,->
获得socket的输入输出流->10次循环,每向服务器写入一行消息,接着就等待从服务器回传过来的消息,且在控制台打印->
向服务器写入一行消息“END”,使服务器shutdown
import java.net.*;public class JabberServer
{
public static final int PORT=8080; //常量变量端口号
public static void main(String[] args) throws IOException //掷出一个错
{
ServerSocket s=new ServerSocket(PORT); //服务器端口声成
System.out.println("Started: "+s);
try
{
Socket socket=s.accept(); //把端口挂起开等待
try
{
System.out.println("Connection accepted: "+socket);
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));//从端口接收串行化数据放入缓冲区
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(str);
}
}
finally
{
System.out.println("Closing...");
socket.close();
}
}
finally
{
s.close();
}
}
}
//JabberClient.java
import java.io.*;
import java.net.*;public class JabberClient
{
public static void main(String[] args) throws IOException
{
InetAddress addr=InetAddress.getByName("127.0.0.1");
System.out.println("addr= "+addr);
Socket socket=new Socket(addr,8080);
try
{
System.out.println("socket= "+socket);
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
for(int i=0;i<10;i++)
{
out.println("howdy"+i);
String str=in.readLine();
System.out.println(str);
}
out.println("END");
}
finally
{
System.out.println("closing...");
socket.close();
}
}
{
out.println("howdy"+i);//这行就是呀
String str=in.readLine();
System.out.println(str);
}
out.println("END");
我产生一个文件流对象FileInputStream 为fin,然后
out.writeByte(fin.readByte());
一个字节一个字节的写入
比如下面这样拷贝一个文件是通过是否等于-1来判断文件是否结束:
BufferedInputStream in=new BufferedInputStream( new FileInputStream("Eventually.mp3"));
BufferedOutputStream out=new BufferedOutputStream( new FileOutputStream("e.mp3"));
byte[] buffer=new byte[255];
while((in.read(buffer))!=-1)
{
out.write(buffer);
}
in.close();
out.close();