黑马程序员--网络编程
来源:互联网 发布:破解银行卡密码软件 编辑:程序博客网 时间: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()
返回此服务器套接字的本地地址。
- 【黑马程序员】网络编程
- 黑马程序员 网络编程
- 黑马程序员:网络编程
- 黑马程序员-------网络编程
- 黑马程序员-网络编程
- 黑马程序员:网络编程
- 黑马程序员--网络编程
- 黑马程序员--网络编程
- 黑马程序员-网络编程
- 黑马程序员-------网络编程
- 黑马程序员-网络编程
- 黑马程序员-----网络编程
- 黑马程序员-网络编程
- 黑马程序员-网络编程
- 黑马程序员 网络编程
- 黑马程序员----- 网络编程
- 黑马程序员 网络编程
- 黑马程序员--网络编程
- 【心得】2013年7月7日
- 20130707 hdu4565 So Easy! 数学头脑+矩阵快速幂
- Hadoop 参数配置优化
- android如何建立数据库。(如何重写SQLiteOpenHelper)
- 光驱与虚拟光驱
- 黑马程序员--网络编程
- 长路拖累你的心
- 2013 - ECJTU 暑期12级训练赛第一场-problem-E
- JAVAEE filter总结
- linux /boot目录简介
- 线程分离:pthread_detach
- android动画学习笔记
- FreeBSD的专长ports安装软件
- c++ 中explicit作用