public static void main(String[] args)
{
ServerSocket ss = new ServerSocket(10101);
Socket sock = ss.accept();
BufferedReader bufrIn =
new BufferedReader(new InputStreamReader(sock.getInputStream()));
BufferedWriter bufw =
new BufferedWriter(new FileWriter("server.txt"));
PrintWriter pw = new PrintWriter();
String key = bufrIn.readLine();//从这里
String lineIn = null;
while(true){
lineIn = bufrIn.readLine();
if(key.equals(lineIn))//到这里,有点看不懂,请高手们帮忙解答
break;
bufw.write(lineIn);
bufw.newLine();
}
PrintWriter pw = new PrintWriter(sock.getOutputStream());
现在发上来的是一部分服务端的主程序
{
ServerSocket ss = new ServerSocket(10101);
Socket sock = ss.accept();
BufferedReader bufrIn =
new BufferedReader(new InputStreamReader(sock.getInputStream()));
BufferedWriter bufw =
new BufferedWriter(new FileWriter("server.txt"));
PrintWriter pw = new PrintWriter();
String key = bufrIn.readLine();//从这里
String lineIn = null;
while(true){
lineIn = bufrIn.readLine();
if(key.equals(lineIn))//到这里,有点看不懂,请高手们帮忙解答
break;
bufw.write(lineIn);
bufw.newLine();
}
PrintWriter pw = new PrintWriter(sock.getOutputStream());
现在发上来的是一部分服务端的主程序
String lineIn = null;
while(true){
lineIn = bufrIn.readLine(); //同上
if(key.equals(lineIn)) //如果两个字符串内容相同
如果内容一样,就结束循环...不一样就写到server.txt里,然后再从socket读一行和第一次读的比较...等等如此估计是为了记录socket流中
第一行字符串和再次出现此字符串之间所有的句子
String key = bufrIn.readLine();//从这里 读取了一个结束标志,表示我后面的数据,如果和这个相同,那么我的输入结束了lineIn = bufrIn.readLine(); // 读一行数据
if(key.equals(lineIn))// 如果等于前面的结束标志,那么结束,否则写入文件。
break;
其实,这是一种约定的协议。输入总得有结束吧,呵呵呵!
服务器接受流规定:End为字符接受开始和结束标志
客户端发送的流格式:
End //这个就是key的值
发送的实际内容 //进入while循环
End //lineIn最后读取到的内容此时key.equals(key)为真,本次数据接受结束