这个是服务器端程序,
package myCS;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;public class MyServer { /**
 * @param args
 */

public static void main(String[] args) { try {
//建立Server Socket并等待连接请求
ServerSocket server = new ServerSocket(1680);
Socket socket = server.accept();

//连接建立,通过Socket获取连接上的输入/输出流
BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream());

//创建标准输入流,从键盘接收数据
BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));

/*先读取Client 发送的数据,
 * 然后从标准输入读取数据发送给Client当接收到bye时关闭连接
 */

String s;
while (!(s=in.readLine()).equals("bye")) {
System.out.println("# 接收自客户端: "+s);  //===>此处接收自客户端的s为什么  不能打印呢?(就这一个疑问)
out.println(sin.readLine());
out.flush();
}
System.out.println("正在关闭连接... ...");

//关闭连接
in.close();
out.close();
socket.close();
server.close();

} catch (Exception e) {
System.out.println("错误:"+e);
}
}}
以下是客户端程序(这个没问题):
package myCS;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;public class MyClient { /**
 * @param args
 */
public static void main(String[] args) { try {
Socket socket = new Socket("127.0.0.1",1680); //发出连接请求

 //连接建立,通过Socket获取连接上的输入/输出流
PrintWriter out = new PrintWriter(socket.getOutputStream());
BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));

//创建标准输入流,从键盘读取数据
BufferedReader sin = new BufferedReader(
new InputStreamReader(System.in));

//从标准输入中读取一行,发生Server端,当用户输入bye时结束连接
String s;
do {
s=sin.readLine();
out.println();
out.flush();
if (! s.equals("bye")) {
System.out.println("@服务器端响应:"+in.readLine());
} else {
System.out.println("正在关闭连接... ...");
}
} while (! s.equals("bye"));

//关闭连接
out.close();
in.close();
socket.close();
} catch (Exception e) {
System.out.println("错误: "+e);
}
}}

解决方案 »

  1.   

    package myCS;import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;public class MyClient {    /**
         * @param args
         */
        public static void main(String[] args) {        try {
                Socket socket = new Socket("127.0.0.1",1680);    //发出连接请求
                
                 //连接建立,通过Socket获取连接上的输入/输出流
                PrintWriter out = new PrintWriter(socket.getOutputStream());
                BufferedReader in = new BufferedReader(
                        new InputStreamReader(socket.getInputStream()));
                
                //创建标准输入流,从键盘读取数据
                BufferedReader sin = new BufferedReader(
                        new InputStreamReader(System.in));
                
                //从标准输入中读取一行,发生Server端,当用户输入bye时结束连接
                String s;
                do {
                    s=sin.readLine();
                    out.println(s);//這裡幫你該了
                    out.flush();
                    if (! s.equals("bye")) {
                        System.out.println("@服务器端响应:"+in.readLine());
                    } else {
                        System.out.println("正在关闭连接... ...");
                    }
                } while (! s.equals("bye"));
                
                //关闭连接
                out.close();
                in.close();
                socket.close();            
            } catch (Exception e) {
                System.out.println("错误: "+e);
            }
        }}