首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于Socket的一个有关问题

2012-04-14 
关于Socket的一个问题Java codeimport java.net.ServerSocketimport java.net.Socketimport java.io.*/

关于Socket的一个问题

Java code
import java.net.ServerSocket;import java.net.Socket;import java.io.*;/**  *send string to each connected client  */public class MainClass4 extends Thread{    Socket socket;    public void run()    {        try        {            String s="I am a server.";            PrintWriter pw=new PrintWriter(socket.getOutputStream(),true);            pw.println(s);            socket.close();        }        catch(Exception e)        {            System.out.println(e);        }    }    /**      *main entry      */    public static void main(String[] args)throws Exception    {        ServerSocket ssock=new ServerSocket(8080);        while(true)        {            Socket esock=null;            esock=ssock.accept();            System.out.println("Connected");            MainClass4 t=new MainClass4();            t.socket=esock;            t.start();            esock.close();        }    }}

这是服务器端程序,向连接到此服务器的客户端发送一段字符串,下面是客户端程序:
Java code
import java.io.*;import java.net.*;/**  *MainClass4 Client  */public class MainClass4Client{      /**        *mian entry    */    public static void main(String[]args)throws IOException    {        Socket sock=null;        BufferedReader bin=null;        try        {            sock=new Socket("localhost",8080);            bin=new BufferedReader(new InputStreamReader(sock.getInputStream()));        }        catch(UnknownHostException e)        {            System.err.println("Don't know about host localhost");            System.exit(1);        }        catch(IOException e)        {            System.err.println(e);        }                System.out.println(bin.readLine());        bin.close();        sock.close();    }}

但是客户端运行结果却是:
null
End
,请问这是怎么回事,客户端怎么没有读取到服务器端发送的字符串呢?

[解决办法]
加上pw.flush()试试、
[解决办法]
服务端不要把sock关闭了

热点排行