java网络socket编程(一)之基础简介
2016-07-13 10:12
387 查看
一、介绍
1.在internate网络中,数据按照有限大小的数据包进行传输,这些包被称为数据报(datagram)。2.每个数据报主要包含部分:一个首部header和一个有效负载payload.
a.首部:主要包含目的地地址和端口、来源地址和端口、检查数据是否被破坏的校验和、以及其他保证可靠传输的其他管理信息。
b.有效负载:包含数据本身。
由于每个数据报的大小是有限的,通常一个完整的数据在传输时,会将数据分成多个数据报即包,所有的包在目的地重新组合形成一个完整的数据。在数据传输过程中也有可能一个或者多个数据报丢失或遭到破坏,这个时候需要重传。也有可能包到达目的地的顺序乱序,则会重新排序。所有这些(如何将数据分解为包,如何生成首部,如何解析如站包的首部、跟踪那些包已经收到而哪些还么有收到等等这些步骤)是很复杂的工作,需要大量的代码来进行实现。
但是,在java中不需要自己去实现这些底层的逻辑,操作的时候只需要socket即可,他们就是另外一种读写字节的流操作。java网络编程掩盖了底层的操作,如错误检测,包大小,包分解,包重传,网络地址等等。
二、Socket的使用
1.socket是两台主机的连接,主要包括以下7个操作部分:1.连接远程服务器
2.发送数据
3.接收数据
4.关闭连接
5.服务器绑定端口
6.服务器监听入栈数据
7.服务器在绑定端口上接受来自远程机器(客户端)的连接。
java的Socket类(客户端和服务器都可以使用)提供了对应前4个步骤的操作的方法。后面三个步骤操作近服务器需要,即等待客户端的连接。这些操作由ServerSocket类来实现。java程序通常采用以下方式使用客户端socket:
1.程序用构造函数创建一个新的Socket。
2.Socket尝试连接远程主机。
一旦建立了连接,本地和远程主机就从socket得到输入和输出流,使用这两个流相互发送数据。连接是全双工个的,2台机器都可以同时发送和接受数据。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Linux socket 初步
- Android IPC进程间通讯机制
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序