服务器与客户端之间通信问题
在服务器中通过命令行向客服端发送数据,在客户端通过命令行向服务器发送数据,结果只能从客户端向服务器发送,当在客服端输入第二个数据时候就无法发送到服务器,求指教
代码如下:
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();
}
}
------解决方案--------------------代码没看。只是 通过你的描述我能感觉出来你的问题。。
只能客户端向服务端那是因为你只在服务器端创建了socket监听.
而且你的监听到之后不是线程形式运行的的,而是一次性的,所以监听到一次之后方法运行结束。就不在继续监听了。。
一般的做法是监听到客户端发送的请求后,new一个新的线程来完成这次的客户端请求。。
------解决方案--------------------你这都是接受一次就结束了。你得去循环监听。。不要收了一次就结束掉才行。
------解决方案--------------------你这样好像在写应用服务的基础,其实还需要考虑到并发数和线程数,以及每次新线程的默认设置。
------解决方案--------------------应该在服务端采用多线程来处理
------解决方案--------------------