网络编程列表
来源:互联网 发布:免费家谱制作软件 编辑:程序博客网 时间:2024/06/06 00:47
一:网络编程概述:
Socket客户端和服务端:
Socket客户端中存在两个流,输入流和输出流/InputStream和OutputStream,如果客户端通过输出流中赋值,跟服务端连接后,服务端获取客户端中的Socket流中的输出流通过InputStream流来获取,并打印控制台或做一些相应逻辑,最终关闭客户端socket对象,服务端可以关闭,也可以不关闭;
第一节: 网络编程(概述)
1. 网络模型
1.1 OSI参考模型 ---网络七层
1.2 TCP/IP参考模型 ---四层
2. 网络通讯要素
2.1 IP地址
2.2 端口号
2.3 传输协议
3. 通讯举例:
3.1 通过ip找到对方
3.2 数据要发送到对方指定的应用程序上,为了标示这些应用程序
所以给这些网络应用程序都用数字进行标识.
为了方便称呼这些数据, 把他们成为 端口. 逻辑端口.
主机1 主机2
QQ QQ
FeiQ FeiQ
IP1 IP2
当主机1的QQ发了一条信息给主机2的QQ时,
当信息到达主机2以后,主机需要通过端口来判断当前数据要发送给哪个进程
3.3 定义通讯规则,这个通讯规则称为协议.
国际组织定义了通用的协议TCP/IP
第二节: 网络编程(概述2)
1. ipv4由四个字节组成,每个字节最大为255.也就是说,如果出现1.1.1.256,这样的ip是不符合规则的
2. ipv4分成四个段
3. 局域网内的ip可以自由划分,不会与公网的ip冲突.
4. 程序的端口不可以冲突,如果冲突了,可以写一个顺延,分配新的端口.
第三节: 网络编程(网络模型)
1. OSI参考模型以及TCP/IP模型
OSI参考模型 TCP/IP
应用层 应用层(We will play here.)
表示层
会话层
传输层 传输层(We are now here playing...)
网络层 网际层(We may play here.)
数据链路层 主机至网络层
物理层
2. TCP/IP协议中
传输层最常见的协议是TCP/UDP
网际层最常见的协议是IP
应用层最常见的协议有http, ftp等等.
应用层是基于传输层的.所以要学习应用层,要先学习传输层和网际层.
第四节: 网络编程(IP地址)
1. IP地址: 网络中的设备标识
1.1 IP地址分很多段,是个复杂的事物,因此java将它封装成了对象.
当我们要操作IP的时候,就可以用java的类进行操作.
1.2 IP地址对象:
java.net包中的 InetAddress
该类没有构造函数.因此应该有个静态的函数返回当前的InetAddress对象.
InetAddress getLocalHost() ;
String getHostName() ;
String getHostAddress() ;
InetAddress[] getAllByName(String host) ;//getAllByName("www.baidu.com") ;
InetAddress getByName(String host) ;
第五节: 网络编程(TCP和UDP)
1.1 UDP 4点
将源地址、目的地址和数据封装在数据报中直接发出去,不需要建立连接。
每个数据报的大小被限制在64kb内
因为是面向无连接的,所以是不可靠的协议
因为不需要建立连接,所以速度比较快。
1.2 TCP 4点
发送数据前进行连接,建立数据传输通道
通过数据通道进行大数据量传输
通过三次握手建立连接,是可靠协议
因为需要建立连接,所以效率稍低
第六节: 网络编程(Socket)//插座???
1.1 Socket是为网络服务提供的一种机制。
1.2 通信的两端都有Socket
1.3 网络通信就是Socket通信
1.4 数据在两个Socket间通过IO传输.
第七节: 网络编程(UDP-发送端)
1. UDP协议Socket服务的建立.
DatagramSocket//此类用来表示发送和接收数据报包的套接字.
//发送数据报包的函数
void send(DatagramPacket p) ;
//接收数据报包的函数
void receive(DatagramPacket p) ;
由此可见,发送和接收数据报包都需要使用到DatagramPacket
DatagramPacket//每条报文仅根据该包中包含的信息从一台机器由到另一台.
//用来接收长度为length的数据报包的构造方法.
DatagramPacket(byte[] buf, int length) ;
//用来发送长度为length的数据报包的构造方法.
DatagramPacket(byte[] buf, int length, InetAddress address, int port)
第八节: 网络编程(UDP-接收端)
1.
第九节: 网络编程(UDP-键盘录入方式数据)
第十节: 网络编程(UDP-聊天)
第十一节: 网络编程(TCP传输)
1. 客户端Socket对象
服务端ServerSocket对象
2. 建立连接后,通过Socket中的IO流进行数据的传输
3. 关闭socket
4. 注意: 客户端与服务端是两个独立的应用程序.
5. Socket类
//Socket类的构造函数
Socket(InetAddress address, int port) ;//客户端一建立的时候就要连接服务器
Socket() ; //后void connect(SocketAddress socketAddr)连接服务器
//Socket类下的方法
InputStream getInputStream();
OutputStream getOutputStream() ;
6. 演示Tcp传输:见TCPDemo.java文件
7. ServerSocket类
//ServerSocket类的构造函数
ServerSocket(int port) ;//创建时绑定一个端口
//ServerSocket类下的方法
Socket accept() ;
第十二节: 网络编程(TCP练习)
1. 需求:
建立一个文本转换服务器
客户端给服务端发送文本,服务端会将文本转成大写,再返回给客户端.
而且客户端可以不断的进行文本的转换.当客户端输入over时,转换结束.
要理解:源是什么、目标又是什么?
客户端:
class TrancClient{
Socket socketClient = new Socket("192.168.1.1",10005);
BufferedReader bufr =new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufO=new BufferedWriter(new OutputStreamWriter(socketClient.getOutputStream())));
BufferedReader bufIn =new BufferedReader(new InputStreamReader(socketClient.getInputStream())));
//可以更改为下面这个流,里面自带flush和换行,已经字符集转换封装功能。
//PrintWriter out = new PrintWriter(socket.getOutputStream(),true);
//PrintWriter out = new PrintWriter(clientChannel.socket().getOutputStream(),true);
String readLine = null;
while(readLine=bufr.readLine())!=nulll){
if(readLine.equest("over')){
break;
}
out.write(readLine);
//用printWriter方式以下语句全部可以注释掉,只需要加上以上一句;
bufO.write(readLine);
bufO.newLine(); //如果是键盘输入,源,需要键入回车键,不然一直在等待状态中。
bufO.flush(); //在socket流中,需要通过flush来完成最终写出;不然有可能阻塞在里面;
}
class TrancServer{
ServerSocket ss = new ServerSocket(10005);
Socket serverSocket = ss.accept();
BufferedRead bufinput =new BufferedReader(new InputStreamReader(serverSocket.getInputStream())));
BufferedWriter bufout =new BufferedWriter(new OutputStreamWriter(serverSocket.getOutputStream())));
//可以更改为下面这个流,里面自带flush和换行,已经字符集转换封装功能。
//PrintWriter out = new PrintWriter(socket.getInputStream(),true);
String line = null;
while((line = bufinput.readLine)!= null){
bufout.writer(line.toUpdataCase()));
bufout.flush();
}
serverSocket.close();
ss.close();
}
- 网络编程资源列表
- 网络编程列表
- C#网络编程教程列表
- 高性能网络编程邮件列表
- 在google申请了一个讨论高性能网络编程的邮件列表,欢迎订阅
- 在google申请了一个讨论高性能网络编程的邮件列表,欢迎订阅
- 在google申请了一个讨论高性能网络编程的邮件列表,欢迎订阅
- 在google申请了一个讨论高性能网络编程的邮件列表,欢迎订阅
- 在google申请了一个讨论高性能网络编程的邮件列表,欢迎订阅
- 在google申请了一个讨论高性能网络编程的邮件列表,欢迎订阅
- 一个封闭不友善的 google group - 高性能网络编程邮件列表
- 《Linux 多线程服务端编程:使用 muduo C++ 网络库》URL 列表
- Winpcap网络编程五之Winpcap学习教程,获取设备列表
- 网络命令列表,使用说明
- 网络流刷题列表
- 网络爬虫IP列表
- 起点网络备用列表
- 网络爬虫教程列表
- linux I2C设备那点事之I2C设备理论篇
- 网络编程socket实例
- Openstack中的测试 ( by quqi99 )
- 超越虚拟化 成就信息化产品
- org.hibernate.hql.ast.QuerySyntaxException: Person is not mapped
- 网络编程列表
- XAF - 审批流
- GVIM 配色
- 该用行内还是块级?
- listView 属性
- 关于ubuntu的root密码问题
- 集合小知识
- c# 执行多条SQL语句,实现数据库事务 线性表 Hashtable
- 好吧~分析比较一下当前互联网JavaWeb不敌php等其他平台的原因~当然先收集信息 2