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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李红飞 中级黑马   /  2012-5-25 22:01  /  1762 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.io.*;
import java.net.*;

class TcpClient2
{
        public static void main(String[] args)throws Exception
        {
                Socket s = new Socket("192.168.1.254",10004);               
                OutputStream out = s.getOutputStream();
                out.write("服务端,你好".getBytes());               
                InputStream in = s.getInputStream();
                byte[] buf = new byte[1024];                                    
                int len = in.read(buf);         
                System.out.println(new String(buf,0,len));
                s.close();
        }
}
class TcpServer2
{
        public static void main(String[] args) throws Exception
        {
                ServerSocket ss = new ServerSocket(10004);
                Socket s = ss.accept();
                String ip = s.getInetAddress().getHostAddress();
                System.out.println(ip+"....connected");
                InputStream in = s.getInputStream();
                byte[] buf = new byte[1024];
                int len = in.read(buf);
                System.out.println(new String(buf,0,len));
                OutputStream out = s.getOutputStream();
                Thread.sleep(10000);
                out.write("你也好".getBytes());  
                s.close();
                ss.close();
        }
}视频讲解上说 用阻塞式方法,流之间传输不会冲突,是什么含义呀?
而且我感觉此题 输入流,输出流之间的流向很混乱?请大家帮忙解释一下!!

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
阻塞式,服务端开启接受客户端发送的数据,如果此时客户端没有数据传过来,服务端会等待数据的传送,
回复 使用道具 举报
服务端      客户端
发送         接收
接受         发送
...            ...

就是这个套路吧

P.S.:即使服务端连续发送两个文件,为了区分不同文件他也必须接受一次,而客户端也必须发送一次信息,否则会出现两个文件被合并的悲剧
回复 使用道具 举报
希望对你有帮助

01.PNG (32.11 KB, 下载次数: 27)

01.PNG
回复 使用道具 举报
本帖最后由 马超 于 2012-5-27 13:46 编辑

我当时在理解的时候也挺困难的  后来恍然大悟:
之所以是阻塞式的方法,从客户端和服务端的角度来讲,服务端开始服务,随时接受来自客户端的消息,不来就等待,来了就做回复。   而输入输出呢,就是看谁在调用了,Input 进来  Output出去  谁调用 就指的是谁。

两端操作.gif (6.5 KB, 下载次数: 27)

两端操作.gif
回复 使用道具 举报
话说我是客户端、楼主是服务器(你提供的服务就是求我给你数的平方值,并反馈给我)

为人民服务你是不是的一直等着我给你传值啊?总不能我给你传的时候你不在岗吧?所以你得一直盯着窗口等我给你传张纸条(我想楼主主要的疑惑不在这里)

如果你不用阻塞,你闭着眼伸手一抓又一抓,抓到了给我返回,抓不到也给我返回一个值

我这边会不会蒙了?我可是VIP客户啊亲~

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马