黑马程序员--网络编程

来源:互联网 发布:破解银行卡密码软件 编辑:程序博客网 时间:2024/06/05 22:53

------- android培训java培训、期待与您交流! ----------

网络通讯要素:

IP地址:InetAddress

网络中设备的标识

不易记忆,可用主机名

本地回环地址:127.0.0.1 主机名:localhost

端口号

用于标识进程的逻辑地址,不同进程的标识

有效端口:0~65535,其中0~1024系统使用或保留端口。

传输协议

通讯的规则


常见协议:TCP,UDP

TCP,UDP


UDP的特点:

1.面向无连接
2.数据会被封包.在64K内
3.不可靠,因为无连接.所以不可靠.
4.速度快,因为不需要连接

例如.聊天的时候就是UDP的,还有视频会议,桌面共享等.

TCP的特点:
1.建立连接,形成传输数据的通道.
2.在连接中进行大数据量传输
3.通过三次握手完成连接,是可靠的协议
4.必须建立连接,但是效率稍低

例如,打电话就是TCP的.
UDP就相当于对讲机,TCP相当于电话,
下载就是TCP的因为不能丢数据.聊天就是UDP的

 

InetAddress 类 ,java.net包中.


InetAddress类用于描述IP的类


没有构造方法.
使用静态方法来访问本类对象

常用方法:


static | InetAddress getLocalHost() : 返回本地主机。

static InetAddress getByName(String host) : 在给定主机名的情况下确定主机的 IP 地址。

String getHostAddress() : 返回 IP 地址字符串(以文本表现形式)。

String getHostName() : 获取此 IP 地址的主机名。

示例:
获取百度IP

Socket


Socket就是为网络服务提供的一种机制。
通信的两端都有Socket。
网络通信其实就是Socket间的通信。

数据在两个Socket间通过IO传输。


DatagramSocket 类 java.net 包中

构造方法:


DatagramSocket()
构造数据报套接字并将其绑定到本地主机上任何可用的端口。
其他参与API.

常用方法:


void send(DatagramPacket p)

从此套接字发送数据报包

DatagramPacket 类 java.net 包中

构造方法:


DatagramPacket(byte[] buf, int length)
构造 DatagramPacket,用来接收长度为 length 的数据包。

DatagramPacket(byte[] buf, int length, InetAddress address, int port)
构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
其他参与API.


常用方法:


int getPort()

返回某台远程主机的端口号,此数据报将要发往该主机或者是从该主机接收到的。

InetAddress getAddress()
返回某台机器的 IP 地址,此数据报将要发往该机器或者是从该机器接收到的。

int getLength()
返回将要发送或接收到的数据的长度。


需求:

通过udp传输方式,将一段文字数据发送出去

定义一个udp发送端。
思路:
1,建立updsocket服务。
2,提供数据,并将数据封装到数据包中。
3,通过socket服务的发送功能,将数据包发出去。
4,关闭资源。


定义udp的接收端。
思路:
1,定义udpsocket服务。通常会监听一个端口。其实就是给这个接收网络应用程序定义数字标识。
方便于明确哪些数据过来该应用程序可以处理。

2,定义一个数据包,因为要存储接收到的字节数据。
因为数据包对象中有更多功能可以提取字节数据中的不同数据信息。
3,通过socket服务的receive方法将收到的数据存入已定义好的数据包中。
4,通过数据包对象的特有功能。将这些不同的数据取出。打印在控制台上。
5,关闭资源。

示例:数据传输

示例:接收数据

TCP传输

Socket和ServerSocket

Tcp分客户端和服务端。
客户端对应的对象是Socket。
服务端对应的对象是ServerSocket。

建立连接后,通过Socket中的IO流进行数据的传输

关闭socket
同样,客户端与服务器端是两个独立的应用程序。


Socket 类 java.net包中
此类实现客户端套接字(也可以就叫“套接字”)。套接字是两台机器间通信的端点。

常用构造方法:
Socket(String host, int port)

创建一个流套接字并将其连接到指定主机上的指定端口号。
其他参阅api.

方法:


OutputStream | getOutputStream()

返回此套接字的输出流。

InputStream getInputStream()
返回此套接字的输入流。

void | shutdownInput()
此套接字的输入流置于“流的末尾”。

void | shutdownOutput() //关闭客户端的输出流。相当于给流中加入一个结束标记-1.
禁用此套接字的输出流。

ServerSocket 类 java.net 包中
此类实现服务器套接字。服务器套接字等待请求通过网络传入。它基于该请求执行某些操作,然后可能向
请求者返回结果。

常用构造方法:


ServerSocket(int port)

创建绑定到特定端口的服务器套接字。

方法:


Socket accept()
侦听并接受到此套接字的连接。 将ServerSocket变成Socket

InetAddress getInetAddress()
返回此服务器套接字的本地地址。

原创粉丝点击