黑马程序员技术交流社区
标题:
网络编程问题
[打印本页]
作者:
李红飞
时间:
2012-5-25 22:01
标题:
网络编程问题
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();
}
}视频讲解上说 用阻塞式方法,流之间传输不会冲突,是什么含义呀?
而且我感觉此题 输入流,输出流之间的流向很混乱?请大家帮忙解释一下!!
作者:
付左军
时间:
2012-5-25 22:16
阻塞式,服务端开启接受客户端发送的数据,如果此时客户端没有数据传过来,服务端会等待数据的传送,
作者:
张晨
时间:
2012-5-25 22:28
服务端 客户端
发送 接收
接受 发送
... ...
就是这个套路吧
P.S.:即使服务端连续发送两个文件,为了区分不同文件他也必须接受一次,而客户端也必须发送一次信息,否则会出现两个文件被合并的悲剧
作者:
付信榕
时间:
2012-5-27 13:31
希望对你有帮助
01.PNG
(32.11 KB, 下载次数: 27)
下载附件
2012-5-27 13:30 上传
作者:
马超
时间:
2012-5-27 13:43
本帖最后由 马超 于 2012-5-27 13:46 编辑
我当时在理解的时候也挺困难的 后来恍然大悟:
之所以是阻塞式的方法,从客户端和服务端的角度来讲,服务端开始服务,随时接受来自客户端的消息,不来就等待,来了就做回复。 而输入输出呢,就是看谁在调用了,Input 进来 Output出去 谁调用 就指的是谁。
两端操作.gif
(6.5 KB, 下载次数: 26)
下载附件
2012-5-27 13:46 上传
作者:
郭宁
时间:
2012-5-27 14:02
话说我是客户端、楼主是服务器(你提供的服务就是求我给你数的平方值,并反馈给我)
为人民服务你是不是的一直等着我给你传值啊?总不能我给你传的时候你不在岗吧?所以你得一直盯着窗口等我给你传张纸条(我想楼主主要的疑惑不在这里)
如果你不用阻塞,你闭着眼伸手一抓又一抓,抓到了给我返回,抓不到也给我返回一个值
我这边会不会蒙了?我可是VIP客户啊亲~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2