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

反派大叔 2013-04-03 10:30:38
在服务器中通过命令行向客服端发送数据,在客户端通过命令行向服务器发送数据,结果只能从客户端向服务器发送,当在客服端输入第二个数据时候就无法发送到服务器,求指教
代码如下:
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();
}
}
...全文
408 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
反派大叔 2013-04-08
  • 打赏
  • 举报
回复
不是,而是服务器可以和客户端不用线程可以进行多次输入
Candylibin 2013-04-08
  • 打赏
  • 举报
回复
引用 楼主 lvn6022440 的回复:
在服务器中通过命令行向客服端发送数据,在客户端通过命令行向服务器发送数据,结果只能从客户端向服务器发送,当在客服端输入第二个数据时候就无法发送到服务器,求指教 代码如下: package com.chinasofti.socket; import java.io.BufferedReader; import java.io.BufferedWriter; i……
Lz是想客户端给服务端发一条信息,服务端给客户端返回一条信息吗?
a1216164960 2013-04-07
  • 打赏
  • 举报
回复
引用 13 楼 lvn6022440 的回复:
大概明白了。
唉 我是让我老师的一句话弄不明白啦。。。
反派大叔 2013-04-07
  • 打赏
  • 举报
回复
大概明白了。
诗错亦染瑾 2013-04-06
  • 打赏
  • 举报
回复
这个 呵呵 不解释啊 服务器要用俩线程类 一个监听 一个发送消息 就可以实现你说的 服务器群发功能 和客户端之间的群发
反派大叔 2013-04-06
  • 打赏
  • 举报
回复
大概清楚了,自己在尝试下
a1216164960 2013-04-06
  • 打赏
  • 举报
回复
引用 9 楼 zhaijizhe 的回复:
应该在服务端采用多线程来处理
对啊那是肯定的。我想知道的是并发数是指什么?是指可以有多少个用户登录吗?还是其他什么的
zhaijizhe 2013-04-06
  • 打赏
  • 举报
回复
应该在服务端采用多线程来处理
a1216164960 2013-04-06
  • 打赏
  • 举报
回复
引用 7 楼 cscxxx 的回复:
你这样好像在写应用服务的基础,其实还需要考虑到并发数和线程数,以及每次新线程的默认设置。
嗯嗯虚心求教,那应该具体的怎么做呢?有什么需要注意的吗?我也只是做了一些基础的。。
cscxxx 2013-04-06
  • 打赏
  • 举报
回复
你这样好像在写应用服务的基础,其实还需要考虑到并发数和线程数,以及每次新线程的默认设置。
a1216164960 2013-04-06
  • 打赏
  • 举报
回复
引用 5 楼 lvn6022440 的回复:
看了你的贴了,目前水平还不行。顺便问个问题,怎么才能实现一个服务器向多个客户端群发信息的功能?
没事我已经解决了我的问题了。就是服务器应该建立一个类管理 与所有用户连接的socket连接,然后通过socket连接发出去就行了
反派大叔 2013-04-06
  • 打赏
  • 举报
回复
看了你的贴了,目前水平还不行。顺便问个问题,怎么才能实现一个服务器向多个客户端群发信息的功能?
失落夏天 2013-04-04
  • 打赏
  • 举报
回复
代码没看。只是 通过你的描述我能感觉出来你的问题。。 只能客户端向服务端那是因为你只在服务器端创建了socket监听. 而且你的监听到之后不是线程形式运行的的,而是一次性的,所以监听到一次之后方法运行结束。就不在继续监听了。。 一般的做法是监听到客户端发送的请求后,new一个新的线程来完成这次的客户端请求。。
  • 打赏
  • 举报
回复
你这都是接受一次就结束了。你得去循环监听。。不要收了一次就结束掉才行。
反派大叔 2013-04-04
  • 打赏
  • 举报
回复
如果我直接在客户端和服务器输入一段文字,双方都可以接收的到,这又为什么那?
a1216164960 2013-04-04
  • 打赏
  • 举报
回复
亲你可以去看看我发的一张帖子 虽然不是很切得题可是你可以看明白你的问题在哪里 顺便帮我解决一下我的问题那就更好啦

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧