Java,Socket和传输文本

时间:2010-03-07 10:40:31

标签: java sockets

我有一个问题,我学习了如何使用套接字,我用下一个代码编写了程序:

import java.net.*;
import java.io.*;
import java.util.*;

public class Client extends Thread{

        public static void main(String args[])
        {
            try
            {

                Socket s = new Socket(args[0],Integer.parseInt(args[1]));
                BufferedReader br=new BufferedReader(new InputStreamReader(System.in,"CP866"));
                String str;
                str=br.readLine();
                str = str+"\n"+s.getInetAddress().getHostAddress()
                +":"+s.getLocalPort();
                PrintWriter pw = new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
                pw.println(str);
                pw.flush();
                while(true){
                    str=null;
                    if((str=br.readLine())==null)
                    break;
                    str = str+"\n"+s.getInetAddress().getHostAddress()
                    +":"+s.getLocalPort();
                    System.out.println(str);
                pw.print(str);
                pw.flush();
                }
            }
            catch(Exception e)
            {System.out.println("init error: "+e);} 
        }

}

服务器端程序只打印获取的消息,第一条消息正常打印,但下一条消息打印格式为:,当我切25-26行时 - 未发送或未获取消息。

为什么?

1 个答案:

答案 0 :(得分:1)

你写了print(str);。所以你不打印换行符(\ n)。您的服务器端也使用BufferedReader(我会使用)。他正在阅读直到换行。

所以改为println(str);