网络编程
来源:互联网 发布:在线汉语词典 知乎 编辑:程序博客网 时间:2024/06/08 17:06
一.网络协议与TCP/IP
tcp/ip协议叫做传输控制/网际协议。又叫网络通讯协议。
端口号的范围为0-65535之间,0-1023是用于一些知名的网络服务和应用。
udp与TCP
TCP传输控制协议,是面向连接的通信协议。
UDP是无连接通信协议。
Socket
Socket是网络驱动层提供给应用程序编程的接口和一种机制。
Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的ip和Port。
Socket数据发送过程
1应用程序产生Socket,2同时调用bind将Socket的信息通知给驱动程序,3应用程序将要发送的数据传给Socket,4驱动程序从Socket取出数据并通过网卡发送出去。
Socket数据接收过程
1应用程序产生Socket,2同时调用bind将Socket的信息通知给驱动程序,3驱动程序根据从网卡传送来的数据报中的指定目标端口号将处理后的数据传送到相应的Socket中,3应用程序从Socket中取数据。
java中的网络编程类
位于java.net包中。
DatagramSocket类用于UDP通信。
ServerSocket类用于TCP通信的服务器端。
Socket类用于TCP通信的服务器和客户端。
二.UDP网络程序
DatagramSocket类
其构造函数有:public DatagramSocket()、public DatagramSocket(int port)、public DatagramSocket(int port,InetAddress ddr)
send(DatagramPacket p)方法
close方法
DatagramPacket类
DatagramPacket就如同码头的发送和接收数据的集装箱。
其构造函数有:public DatagramPack(byte[] buf,int length)(用于创建接收数据的包)、public DatagramPack(byte[] buf,int length,InetAddress address,int port)(用于发送数据的包,必须要指定对方的地址和端口号)
其有getInetAddress和getPort方法以及getData和getLength方法。
InetAddress类
InetAddress是表示ip地址的一个类、“www.itcast.cn”等
把字符串ip地址转换的getByName方法。
对于发送中文的时候,strInfo.length()应改为strInfo.getByte().length,因为strInfo.length()是字符串个数,而strInfo.getByte().length为字节个数
三.TCP网络程序
工作原理:
tcp客户端程序与服务器端程序交互过程:
(1)服务器程序创建一个ServerSocket,然后调用accept方法等待客户来连接。
(2)客户端程序创建一个Socket并请求与服务器建立连接。
(3)服务器收到客户的连接请求,并创建一个新的Socket与该客户建立专线连接。
(4)建立连接的两个Socket在一个单独的线程(由服务器程序创建)上对话。
在TCP网络连接上传递对象
ObjectInputStrea和ObjectOutputStream可以从底层输入流中读取对象类型的数据和将对象类型的数据写入高底层输出流中。
使用ObjectInputStrea和ObjectOutputStream来包装底层网络字节流,TCP服务器和TCP客户端之间就可以传递对象类型的数据。
访问Internet网络资源
URL(Uniform Resource Locator)基本组成:协议、主机名、端口号、资源名。相对URL,例如"/a.html"
URL编码规则:
将空格转化为加号。对字母数字保持不变。对于所以其他字符则是用这个字符在内存中的十六进制表示,并在每个字节前加%,如字符“+”用%2B表示。中文字符在内存中占用两字节,字符“中”用%D6%D0表示。空格也可以用%20表示。
http协议的会话过程:
基于http1.0协议
客户机和服务器建立连接后,客户机向服务器发送请求,服务器接到请求后向客户机回送响应信息后关闭连接
基于http1.1协议
客户机和服务器建立连接后,客户机向服务器发送请求信息,服务器接到请求后向客户机回送响应信息,这个期间客户机可以发送n次请求同时服务器响应请求,客户机发出关闭连接才结束会话连接。
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- base64加密解密算法 C实现(转载)
- mysql 永久连接mysql_pconnect和mysql_connect
- ubuntu 9.10 声音很小前台无法调节的处理方法
- IEEE 802 LAN/MAN Standards Committee
- TCP/IP、Http、Socket的区别
- 网络编程
- android中LayoutInflater的使用
- profiling 的使用
- c++继承经典例子
- 工具栏 DialogBar的横排与竖排
- 接口继承和实现继承
- Ubuntu Amarok 安装及几个常见问题解决
- 【css问题】设置表格边界
- GIT