java socket单线程一对一聊天代码问题

CloseTest类是自定义一个关流的方法.问题如下:代码实现一对一,客户端一句话,服务器回一句话。我把读写操作方在while循环里。我想知道读的信息是传到InputSt... CloseTest类 是自定义一个关流的方法.
问题如下:
代码实现一对一,客户端一句话,服务器回一句话。我把读写操作方在while循环里。
我想知道读的信息是传到InputStream is = socket.getInputStream(); 还是直接传到is?

不太了解交互的信息是怎么跳·

具体代码见下:
服务器:
public static void main(String[] args) throws Exception {
Socket socket = new Socket(InetAddress.getByName("127.0.0.1"), 6666);
OutputStream os = socket.getOutputStream();
InputStream is = socket.getInputStream();
Scanner scan = new Scanner(System.in);
while(true){
//写
String msg = scan.nextLine();
byte[] b = msg.getBytes();
os.write(b, 0, b.length);

//读
b = new byte[1024];
is.read(b);
msg = new String(b,0,b.length);
System.out.println("来自服务器的消息:"+ msg);
if(msg.equals("bye")){
break;
}
}
CloseTest.closeAll(os,is,scan,socket);
}

=========================================
客户端

public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(6666);
System.out.println("服务器在监听");
Socket socket = server.accept();
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
Scanner scan = new Scanner(System.in);

while(true){
//读
String msg = null;
byte[] b = new byte[1024];
is.read(b);
msg = new String(b,0,b.length);
System.out.println("来自客户端的消息:"+ msg);
if(msg.equals("bye")){
break;
}

//写
msg = scan.nextLine();
b = msg.getBytes();
os.write(b,0,b.length);
}
CloseTest.closeAll(is,os,scan,socket,server);

}
展开
 我来答
Wzz顿悟
2016-09-22
知道答主
回答量:9
采纳率:0%
帮助的人:5.9万
展开全部
在while循环里,信息直接传入输入或输出流啊,就是is 或os,因为这两个流在进入while循环之前就已经通过socket获得了,一直存在的。
追问
(⊙o⊙)哦  是因为定义is os的时候,已经赋予相应的流。所以,就流就在while循环进行读写。 是这样理解吧?
追答
是的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式