A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

题目是:
使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印。

下面是我写的代码,为啥在Client端获取不到输入的数据呢?求解
-------------------------------------------------------------------------------------
服务器端:
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    private static ServerSocket server;
    public static void main(String[] args) throws Exception {
        server = new ServerSocket(6000);
        while (true) {
            Socket client = server.accept();
            BufferedReader inFromClient = new BufferedReader(new InputStreamReader(client.getInputStream()));
            DataOutputStream outToClient = new DataOutputStream(client.getOutputStream());
            String s_previous = inFromClient.readLine();
            //StringBuffer s_temp = new StringBuffer(s_previous);
            //String s_later = s_temp.reverse().toString();
            outToClient.writeBytes(new StringBuffer(s_previous).reverse().toString());
        }
    }
}
-------------------------------------------------------------------------------------
客户端:
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.Socket;

public class Client {
    public static void main(String[] args) throws Exception {
        BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
        Socket client = new Socket("127.0.0.1",6000);
        DataOutputStream outToServer = new DataOutputStream(client.getOutputStream());
        BufferedReader inFromServer = new BufferedReader(new InputStreamReader(client.getInputStream()));
        String s_previous = inFromUser.readLine();
        outToServer.writeBytes(s_previous + '\n');
        String s_later = inFromServer.readLine();
        System.out.println("From Server:" + s_later);
        client.close();
    }
}

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1

查看全部评分

9 个回复

倒序浏览
终于解决了,原来服务器端的outToClient没有关闭
回复 使用道具 举报
zgjswp 发表于 2015-3-9 01:15
终于解决了,原来服务器端的outToClient没有关闭

早上发现错误了,睡了一觉有了我的理解:当服务器端的outToClient不关闭的时候,一直在等待客户端的输入,无法判断客户端何时结束
回复 使用道具 举报
服务器端加入Server.close();
回复 使用道具 举报
Mr.南郭 发表于 2015-3-11 16:48
服务器端加入Server.close();

关了服务器端不就停止工作了吗
回复 使用道具 举报
zgjswp 发表于 2015-3-11 21:20
关了服务器端不就停止工作了吗

你说的对,但是你的解决方法我木有看懂,我太菜了
回复 使用道具 举报
你可以使用 new Prinwriter(outputStream,ture);来获取一个自动刷新的  输出流 用println方法 去打印的要响应的数据  就不会有你的问题了  凡是这种收不到数据的问题 都是输出流刷新的问题
回复 使用道具 举报
完全看不懂
回复 使用道具 举报
zgjswp 中级黑马 2015-3-12 00:08:21
9#
wf111sxwf 发表于 2015-3-11 23:17
你可以使用 new Prinwriter(outputStream,ture);来获取一个自动刷新的  输出流 用println方法 去打印的要 ...

好的,我得试试看
回复 使用道具 举报

这是Socket通信啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马