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

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台机器都可以同时发送和接受数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  网络 socket java