ti第九讲网络编程
Video 1
l 网络编程的基础知识
ü 网络协议TCP/IP
ü IP地址和Port端口—IP地址,4bytes
本地回路的IP地址:127.0.0.1—不经过网卡传递;只经过TCP/IP;只用于本机的用来test的。
端口的范围为0~65535之间,0~1023之间的端口数是用于一些知名的旺火服务和应用。
ü UDP与TCP
TCP—传输控制协议,是面向连接的通信协议。
UDP—用户数据报协议(User Datagram Protocol),是无连接通信协议。
ü Socket
Socket 是网络驱动层提供给应用程序编程的接口和一种机制。
可以把socket比喻成一个港口码头。应用层序只要把货物放到港口码头上,就算完成了货物的运送。应用程序只需等待货物到达码头后,将货物取走。
Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的IP和port
ü Socket数据发送过程
ü Java中的网络编程类
² 位于java.net包中
² Datagramsocket类用于UDP通信
² Serversocket类用于TCP通信的服务器端
² Socket类用于TCP通信的服务器和客户端
Video 2—UDP 网络程序
l Datagramsocket类
构造函数
Public DatagramSocket()
Public DatagramSocket(int port)
Public DatagramSocket(int port, inetAddress laddr)
l Close 方法
要将datagram关闭
l Send(datagrampacket p)
l Receive(datagramPacket p)
datagramPacket class
如果把datagramSocket比作创建的港口码头,那么DatagramPacket就是发送和接受数据的集装箱。
构造函数:
Public DatagramPacket(byte[] buf, int length)
Public DatagramPacket(byte[] buf, int length, InetAddress address, int port)//发送时必须制定IP
AND PORT/
getInetAddress 和getPort方法
getData 和getLength 方法
InetAddress class
是用于表示计算机IP地址的一个类,而在日常应用中的计算机地址是192.168.0.1、www.it315.org
getName() and getHostName()
video 3 –用UDP编写网络聊天程序
1. 编写图形用户界面;
2. 编写网络消息发送功能
3. 编写网络消息接受功能
Video 4—用UDP编写网络聊天程序con’t
私有IP通过网关代理上网的原理
Video 5 –TCP 网络程序
TCP网络程序的工作原理:
ServerSocket
第一个构造函数还没有与任何端口连接;
第二个构造函数指定端口;端口号为0,系统会自动指定未用的端口号。比较常用。
第三个:可以指定端口,backlog
第四个:还可以指定IP地址,应用于多个IP的电脑。
不需要用时,记得close。好让系统可以重新分配端号
Accept,
Socket
当客户端和服务器连接之后,getinputstream和getoutputstream
简单的TCP服务器程序:
1. TCP服务器程序必须先启动运行,TCP客户程序才能连接上TCP服务器
2. 使用windows提供的telent程序测试TCP服务器程序
3. 使用bufferedreader包装类,从网络输入流中一次读取一行文本。
4. 如何打开telnet程序的本地回显功能。
Video 6—完善TCP服务器程序模型
编写TCP服务器程序模型的编写要点:需要循环调用;需要独立的县城中运行;
很好玩,哈哈不错!
Video 7—如何检测和解决端口冲突问题
Netstat命令可以查看当前正在被使用的端口
Netstat – help可以查看更多的服务
通过一个配置参数来指定TCP服务程序所使用的端口号。
如果用户指定端口号,服务器下次启动时,应该用那个保存的那个;
TCP 客户端程序
可以通话很开心,哈哈哈
在TCP网络连接上传递对象
Objectinputstream and ObjectOutputStream 可以从底层输入流中读取对象类型的数据和将对象类型的数据写入到底层输出流。
使用objectinputstream和objectoutputstream来包装底层网络字节流,TCP服务器和TCP客户端之间就可以传递对象类型的数据。
注意:
怎样理解应用程序协议和网络协议的关系。
FTP是建立在TCP/IP的网络通信协议上。
怎样区分ASP、JSP与网络编程的概念。
Video 8—访问internet网络资源
URL—uniform resource locator
URL的基本组成:协议、主机名、端口号、资源名。
例如
复杂的可能包含账号密码,认证方式。
相对URL,例如:”/a.html” “../a.html” “../../a.html” “a.html”
URL编码规则;
将空格换为+号
对于0~9,a~z, A~Z保持不变
对于其他的字符,用这个字符的当前字符集编码在内存中的十六进制格式表示,并在每个自己钱加上一个百分号,;对于空格也可以直接使用其十六进制编码方式,而不是将他转换成+;
HTTP 协议的会话过程
基于HTTP1.0 协议的客户机与服务器的信息交换过程
HTTP请求消息
一个完整的请求信息包括:一个请求行、若干消息头、以及实体内容:
例如:
一个完整的响应消息包括:一个状态行,若干消息头,以及实体内容:
了解几个HTTP消息头:
Connection—用于指定处理完本次请求/响应后,客户端与服务端是否继续保持连接。设置值可以为keep-alive and close
Accept-Language—用于指出客户机期望
Video 9—URL类
方法:getProtocol, getHost, getPort, getFile
openConnection方法返回URLConnection对象。
工厂设计模型
URL类的setURLStreamHandlerFactory(URLStreamHandlerFactory fac)
StreamHandlerFactory 类的createURLStreamHandler(String protocol)
URLConnection 与HttpURLConnection 类
SetRequestProperty 方法
getHeaderFields 方法
getInputStream 和getOutputStream
getHeaderField, getContentLength, getContentEncoding, getContentType
HttpURLConnection的disconnect可以关闭底层共享网络。
Video 10—URLConnection and HttpURLConnection class
思考与实践: