您的位置:首页 > 理论基础 > 计算机网络

【马士兵】笔记_Java网络编程

2016-11-15 05:39 489 查看
有道云笔记 连接:
http://note.youdao.com/noteshare?id=73a73d444af9b9165649e572f9f1feb4
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

以下可忽略:

《Java网络编程》
 
与《Java IO流》联系比较紧密。有时涉及到多线程。
 
分层思想、IP、TCP/UDP编程(写法比较固定、跟IO等的结合使用)。
 
 
 
 
 
网关:连接外网与内网的计算机。IP地址(真实IP)是有限的,经常的办法是:将若干台计算机组合成一个子网,公用一个真实IP;子网的内部把虚拟IP分给计算机(虚拟IP的分配和解析与子网掩码有关)。网关一般有两块网卡。
 
UDP应用(不接受延迟的,容许少量出错的):视频直播,音频传输,网络游戏。TCP应用(不容出错的):银行。
 
编程时自定端口号时,注意两点:1024以下的不能用,随时可能被系统争用;一些著名软件的端口,如20、8080。
注意,上面说的是TCP的端口号,实际UDP也有端口,二者可以内容一样,但是种类不同。
 
Socket编程,开发时,一般是Server和Client同时编写,互相参照;测试时,一般是先启Server,再测Client。
 
 
127.0.0.1:本机IP。
Client端在申请连接Server端时,只需确定Server端的端口,client端的端口是随机拿取的。
ServerSocket的编写:Server需要不间断运行,时刻等待Client的请求,所以ServerSocket时刻监听在其初始化的端口号上。accept()方法是阻塞式的。(另一个阻塞式的方法是readLine(),读取终端输入;DataInputStream的readUTF()方法也是阻塞式的)Java1.4以前都是同步式的(阻塞),5.0以后提供了异步式的。
 
 
 

 
 
 
上例,Client和Server都在读和写,需要一个先读后写、一个先写后读。
 
UDP编程,没有Client和Server之分,只是角色上划分。
 
 
 
上例,Client端把一个字符串(String)转换成字节数组(Byte[]),发给Server,Server端把接受到的字节数组存于一个DatagramPacket构建的内存区域里,然后再把它解析成字符串,打印出来。
与UDP结合使用较多的IO流:ByteArrayOutputStream、DataOutputStream等。
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: