Java网络编程,客户端和服务端相互发送信息,可是我写的双方都没读到对方发送的信息,代码如下

 我来答
蜗牛46
推荐于2018-04-09 · TA获得超过1015个赞
知道小有建树答主
回答量:1176
采纳率:50%
帮助的人:643万
展开全部

这个地方有问题,第一,你必须写入newLine,要不会造成阻塞;第二,你必须先flush后才能读服务器;第三,你从控制台输入应该有个结束标志,要不你在while里面把bw关闭了,你还怎么循环

客户端这个地方重写一下,

		while(true)	{
temp=br.readLine();
if(temp.equals("over")){
break;
}
bw.write(temp);
bw.newLine();//如果没有,使用readLine则会造成莫名等待
bw.flush();
}

 不一定改全了,你先试试这些改动,如有问题再找

在仙宫湖滑旱冰的碧玉兰
2016-10-21 · TA获得超过315个赞
知道小有建树答主
回答量:163
采纳率:100%
帮助的人:140万
展开全部

把 System.out.println(reader.readLine()); 这句去掉

把 bw.close(); 去掉

下面是你的代码,运行试试

客户端

package com.pzr.demo20161021;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

public class demo3 {
    public static void main(String args[]){
        try {
            Socket socket  = new Socket("127.0.0.1",8888);
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
            
            
            while(true){
                System.out.println("请输入消息:");
//                System.out.println("服务器发过来的消息:"+reader.readLine());
                bw.write(br.readLine());
                bw.newLine();  
                bw.flush();
            }
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 服务端

package com.pzr.demo20161021;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class demo4 {
    public static void main(String args[]){
        try {
            ServerSocket serverSocket =new ServerSocket(8888);
            Socket socket = serverSocket.accept();
            System.out.println(socket.getInetAddress().getHostAddress()+"已连接");
            BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            BufferedWriter witer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
            String string = null;
            while((string = reader.readLine()) != null){
                System.out.println(string);
            }
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            while((string = br.readLine()) != null){
                witer.write(string);
                witer.newLine();
                witer.flush();
            }
            reader.close();
            br.close();
            
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lmmcfl510
2016-10-21 · 超过70用户采纳过TA的回答
知道小有建树答主
回答量:153
采纳率:33%
帮助的人:57万
展开全部
tcp的东西忘记了,感觉应该是端口的问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式