基于TCP/IP的Socket编程,我想服务器端发出一个信息,然后客户端读出来.
服务器:
import java.io.*;
import java.net.*;
class server
{
public static void main(String[] args)
{
try
{
ServerSocket server=new ServerSocket(9999);
Socket s=server.accept();
System.out.println("服务器正在监听......");
OutputStream out=s.getOutputStream();
out.write(("欢迎你光临JAVA世界").getBytes());
}
catch(Exception e)
{
e.printStackTrace();
}
}
}  
客户端:import java.io.*;
import java.net.*;class client
{
public static void main(String[] args)
{
try
{
Socket c=new Socket(InetAddress.getLocalHost(),9999);
  BufferedReader in=new BufferedReader(new InputStreamReader(c.getInputStream()));
  String name=in.readLine();
  System.out.println(name);
}
 catch(Exception e)
  {
e.printStackTrace();
}
}
}
出现问题,但是我把BufferedReader in=new BufferedReader(new InputStreamReader(c.getInputStream()));这个换成InputStream in=c.getInputStream();然后在修改一下读取的方式:byte[] buf=new byte[100];
  int len=in.read(buf);
  System.out.println(new String(buf,0,len));
} 之后,这个程序就没有问题了,请问这是什么原因啊!我要用BufferedReader定义这个输入流对象应该怎么解决啊!

解决方案 »

  1.   

    OutputStream out=s.getOutputStream();
    out.write(("欢迎你光临JAVA世界").getBytes());
    改为                PrintWriter out =
                        new PrintWriter(
                          new BufferedWriter(
                            new OutputStreamWriter(
                                    s.getOutputStream())),true);
                    System.out.println("服务器正在监听......");
         out.write("欢迎你光临JAVA世界");    
    试一下
      

  2.   

    public class SocketServer {
    public static void main(String[] args)
    {
    try
    {
    ServerSocket server=new ServerSocket(9999);
    Socket s=server.accept();
    System.out.println("服务器正在监听......");
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));

    bw.write("Hello");
    bw.close();
    s.close();

    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    }}
    把服务端该成OutputStreamWriter就正常了
    可能是数据类型的问题