我想建立一个ServerSocket,用此把传来的数据倒序输出:
--------------------------------------------------------------------------
MyServerSocket.java
import java.net.*;
import java.io.*;
public class MyServerSocket 
{

/**
 * Method main
 *
 *
 * @param args
 *
 */
public static void main(String[] args) 
{
// TODO: Add your code here
try
{
ServerSocket ss = new ServerSocket(8001);
while(true)
{
Socket s = ss.accept();
new Thread(new Service(s)).start();
}

}catch(Exception e)
{
e.printStackTrace();
}

}
}
--------------------------------------------------------------------------
Service.java
import java.net.*;
import java.io.*;
public class Service  implements Runnable
{
private Socket s;
public Service(Socket s)
{
this.s = s;
}
/**
 * Method run
 *
 *
 */
public void run()
{
try
{
InputStream in = s.getInputStream();
OutputStream out = s.getOutputStream();
PrintWriter bw = new PrintWriter(out);

BufferedReader br = new BufferedReader(new InputStreamReader(in));
while(true)
{
String strLine = br.readLine();
if(br.readLine().equalsIgnoreCase("quit"))
{
break;
}
else
{

String strEcho = (new StringBuffer(strLine).reverse()).toString();
bw.println(strLine + "-->" + strEcho);
}
}

}
catch(Exception e)
{
e.printStackTrace();
}


}

}
------------------------------------------------------------------------------
用telnet连接本地的8001端口,在输入数据的时候.cmd中根本显示不出来!!请大家帮忙啊,看程序是不是哪有错啊?

解决方案 »

  1.   

    首先这儿有问题:
    String strLine = br.readLine();
    if(br.readLine().equalsIgnoreCase("quit"))
    {
    break;
    }
    你有两个readLine2. bw.println(strLine + "-->" + strEcho);
    没有bw.flush();3.if(br.readLine().equalsIgnoreCase("quit"))
    {
    break;
    }
    后没有关闭socket改了下子:
    public void run(){
    try{
    InputStream in= s.getInputStream();
    OutputStream out= s.getOutputStream();
    PrintWriter bw= new PrintWriter(out);

    BufferedReader br= new BufferedReader(new InputStreamReader(in));
    while(true){
    String strLine= br.readLine();
    if(strLine.equalsIgnoreCase("quit")){
    break;
    } else{
    String strEcho= (new StringBuffer(strLine).reverse() )
    .toString();
    bw.println(strLine+"-->"+strEcho);
    bw.flush();
    }
    }
    } catch (Exception e){
    e.printStackTrace();
    } finally{
    try{
    s.close();
    }catch(Exception e){
    }
    }
    }