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

服务器与客户端之间通信有关问题

2013-04-12 
服务器与客户端之间通信问题在服务器中通过命令行向客服端发送数据,在客户端通过命令行向服务器发送数据,

服务器与客户端之间通信问题
在服务器中通过命令行向客服端发送数据,在客户端通过命令行向服务器发送数据,结果只能从客户端向服务器发送,当在客服端输入第二个数据时候就无法发送到服务器,求指教
代码如下:
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一个新的线程来完成这次的客户端请求。。
[解决办法]
你这都是接受一次就结束了。你得去循环监听。。不要收了一次就结束掉才行。
[解决办法]
你这样好像在写应用服务的基础,其实还需要考虑到并发数和线程数,以及每次新线程的默认设置。
[解决办法]
应该在服务端采用多线程来处理
------解决方案--------------------


这个  呵呵 不解释啊  服务器要用俩线程类 一个监听 一个发送消息  就可以实现你说的 服务器群发功能 和客户端之间的群发

热点排行