在服务器中通过命令行向客服端发送数据,在客户端通过命令行向服务器发送数据,结果只能从客户端向服务器发送,当在客服端输入第二个数据时候就无法发送到服务器,求指教
代码如下:
package com.chinasofti.socket;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
/**
 * 服务器端
 */
public class ServerClass { public static void main(String[] args) throws IOException {
ServerSocket cilent = new ServerSocket(8888);
Socket sc = cilent.accept();



InputStream is = sc.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
System.out.println(br.readLine());

OutputStream os = sc.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw); InputStreamReader ir = new InputStreamReader(System.in); 
BufferedReader bfr = new BufferedReader(ir);
String s = bfr.readLine();
while(s!=null){
bw.write(s+"\r\n");
bw.flush();
s = bfr.readLine();
}
bw.close();
}
}
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
/**
 * 客户端
 */
public class CilentClass { public static void main(String[] args) throws UnknownHostException, IOException {
Socket server = new Socket("127.0.0.1", 8888);
InputStream is = server.getInputStream();
OutputStream os = server.getOutputStream();

OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);

InputStreamReader ir = new InputStreamReader(System.in); 
BufferedReader bfr = new BufferedReader(ir);
String s = bfr.readLine();

while(s!=null){
bw.write(s+"\r\n");
bw.flush();
s = bfr.readLine();
} InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
System.out.println(br.readLine());
bw.close();
}
}

解决方案 »

  1.   

    代码没看。只是 通过你的描述我能感觉出来你的问题。。
    只能客户端向服务端那是因为你只在服务器端创建了socket监听.
    而且你的监听到之后不是线程形式运行的的,而是一次性的,所以监听到一次之后方法运行结束。就不在继续监听了。。
    一般的做法是监听到客户端发送的请求后,new一个新的线程来完成这次的客户端请求。。
      

  2.   

    没事我已经解决了我的问题了。就是服务器应该建立一个类管理 与所有用户连接的socket连接,然后通过socket连接发出去就行了