网络编程总结以及TCP与UDP
2013-09-15 11:00
330 查看
网络编程
----------------------------------------------------------------------------
*网络模型
OSI参考模型
TCP/IP
*网络通讯要素
ip地址
端口号
传输协议
网络传输的应用
1,找到对方IP
2,数据要发送到对方指定的应用程序上。为了标识这些应用程序,所以给这些网络应用程序都用数字进
行标识。
为了方便称呼这些数字标识就叫做"端口",我们计算机上所说的端口并非是网线上的那种物理端口,我
们的端口属于逻辑端口。也就是说我们用MSN发送信息之所以不会发送到QQ上就是因为两者的数字标示不
同。
3,定义通讯规则,这个规则称为"协议"。
国际组织定义了一个通用协议:TCP/IP。不论进入哪个国家的服务器游戏,都可以进行交互,就是因为
都拥有共通的TCP/IP ,UDP
=======================================================================================
----TCP/IP和UDP的区别
UDP
*将数据及源和目的封装成数据包中,不需要建立连接
*每个数据包的大小限制在64K内
*因无连接,是不可靠协议
*不需要建立连接,速度快
TCP
*建立连接,形成传输数据的通道。
*在建立连接中进行大数据量传输
*通过三次握手完成连接,是可靠协议
(三次握手就是例如:张三在吗?是的我在;好我知道你在了。三次握手来验证)
*必须建立连接,效率会稍低
小结:UDP发送时会封包,包大小会有限制,面向无连接。速度快可靠性低
=======================================================================================
IP限定最高位255
端口最高为0-65535不过一般系统端口在1024中,WEB服务80,TOCAT8080,
-----------------------------------------------------------------
Ip地址
*网络中设备的标识
*不易记忆,可用主机名
*本地回环地址:127.0.0.1,主机名:localhost
点口号
*用于标识进程的逻辑地址,不同进程的标识
*有效端口:0-65535,其中0-1024系统使用或保留端口。
传输协议
*通讯的规则
*常见协议:TCP,UDP
得到IP地址以及本机名:
密码
InetAddress inter = InetAddress.getLocalHost();//得到本机信息
System.out.println("本地IP:"+inter.getHostAddress());
System.out.println("本地名称:"+inter.getHostName());
InetAddress other = InetAddress.getByName("www.baidu.com");//通过IP得到任何
一台机器的信息
/*如果IP地址和对应的主机名映射关系没有在网络上的话,主机地址可以找到,但是
没有解析成功。
* 所以得到的本机名还是IP地址
*
* */
System.out.println("本地IP:"+other.getHostAddress());
System.out.println("本地名称:"+other.getHostName());
=========================================================================================
Socket(插座)
*Socket就是为网络服务提供的一种机制。
我们可以理解为码头,两个码头若要传输货物,必须先要有码头才能接受和发送。
注意:凡是带有地址的端口都是构造发送数据包的。
---------------------------------------------------------------------------------------
需求:通过UDP传输方式,将一段文字数据发送出去
思路:
1,建立Updsocket服务。
2,提供数据,并将数据封装到数据包中(寻找端口发送什么样的内容)
3,通过Socket服务的发送功能,将数据包发出去。
4,关闭资源。
//1,建立Updsocket服务。
DatagramSocket ds = new DatagramSocket();
//2,确定数据,并将数据封装到数据包中(寻找端口发送什么样的内容),
//DatagramPacket(byte[] buy,int length,InetAddress,int pot);1,资料,2发送长
度多少,3IP位置,4端口号
byte[] buf = "upd here i come".getBytes();
DatagramPacket dp = new DatagramPacket
(buf,buf.length,InetAddress.getByName("127.0.0.1"),8080);
//3,通过Socket服务的发送功能,将数据包发出去。
ds.send(dp);
//4,关闭资源。
ds.close();
但是端口号发过来了,但是怎么能被数据收到呢??
需求:
1,定义UDPsocket服务。
2,定义一个数据包,因为要存储接受到的字节数据。因为数据包对象中有更多功能可以提取字节数据中
的不同数据信息。
3,通过Socket服务的receive方法接收到的数据存储已定义好的数据包中。
4,通过数据包对象的特有功能,将这些不同的数据取出,打印在控制台上。
5,关闭资源。
实现代码:
//1 创建udpsocket,创建接受端口
DatagramSocket ds = new DatagramSocket(10000);
//2 定义数据包,用于存储数据
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
//3 用receive方法将数据存到数据包中
ds.receive(dp);
//4 通过数据包的方法解析包中的数据
String ip = dp.getAddress().getHostAddress();
String date = new String(dp.getData(),0,dp.getLength());
int port = ds.getPort();
System.out.println("ip:"+ip+"----内容:"+date+"-----port:"+port);
//5 关闭数据
ds.close();
----------------------------------------------------------------------------
*网络模型
OSI参考模型
TCP/IP
*网络通讯要素
ip地址
端口号
传输协议
网络传输的应用
1,找到对方IP
2,数据要发送到对方指定的应用程序上。为了标识这些应用程序,所以给这些网络应用程序都用数字进
行标识。
为了方便称呼这些数字标识就叫做"端口",我们计算机上所说的端口并非是网线上的那种物理端口,我
们的端口属于逻辑端口。也就是说我们用MSN发送信息之所以不会发送到QQ上就是因为两者的数字标示不
同。
3,定义通讯规则,这个规则称为"协议"。
国际组织定义了一个通用协议:TCP/IP。不论进入哪个国家的服务器游戏,都可以进行交互,就是因为
都拥有共通的TCP/IP ,UDP
=======================================================================================
----TCP/IP和UDP的区别
UDP
*将数据及源和目的封装成数据包中,不需要建立连接
*每个数据包的大小限制在64K内
*因无连接,是不可靠协议
*不需要建立连接,速度快
TCP
*建立连接,形成传输数据的通道。
*在建立连接中进行大数据量传输
*通过三次握手完成连接,是可靠协议
(三次握手就是例如:张三在吗?是的我在;好我知道你在了。三次握手来验证)
*必须建立连接,效率会稍低
小结:UDP发送时会封包,包大小会有限制,面向无连接。速度快可靠性低
=======================================================================================
IP限定最高位255
端口最高为0-65535不过一般系统端口在1024中,WEB服务80,TOCAT8080,
-----------------------------------------------------------------
Ip地址
*网络中设备的标识
*不易记忆,可用主机名
*本地回环地址:127.0.0.1,主机名:localhost
点口号
*用于标识进程的逻辑地址,不同进程的标识
*有效端口:0-65535,其中0-1024系统使用或保留端口。
传输协议
*通讯的规则
*常见协议:TCP,UDP
得到IP地址以及本机名:
密码
InetAddress inter = InetAddress.getLocalHost();//得到本机信息
System.out.println("本地IP:"+inter.getHostAddress());
System.out.println("本地名称:"+inter.getHostName());
InetAddress other = InetAddress.getByName("www.baidu.com");//通过IP得到任何
一台机器的信息
/*如果IP地址和对应的主机名映射关系没有在网络上的话,主机地址可以找到,但是
没有解析成功。
* 所以得到的本机名还是IP地址
*
* */
System.out.println("本地IP:"+other.getHostAddress());
System.out.println("本地名称:"+other.getHostName());
=========================================================================================
Socket(插座)
*Socket就是为网络服务提供的一种机制。
我们可以理解为码头,两个码头若要传输货物,必须先要有码头才能接受和发送。
注意:凡是带有地址的端口都是构造发送数据包的。
---------------------------------------------------------------------------------------
需求:通过UDP传输方式,将一段文字数据发送出去
思路:
1,建立Updsocket服务。
2,提供数据,并将数据封装到数据包中(寻找端口发送什么样的内容)
3,通过Socket服务的发送功能,将数据包发出去。
4,关闭资源。
//1,建立Updsocket服务。
DatagramSocket ds = new DatagramSocket();
//2,确定数据,并将数据封装到数据包中(寻找端口发送什么样的内容),
//DatagramPacket(byte[] buy,int length,InetAddress,int pot);1,资料,2发送长
度多少,3IP位置,4端口号
byte[] buf = "upd here i come".getBytes();
DatagramPacket dp = new DatagramPacket
(buf,buf.length,InetAddress.getByName("127.0.0.1"),8080);
//3,通过Socket服务的发送功能,将数据包发出去。
ds.send(dp);
//4,关闭资源。
ds.close();
但是端口号发过来了,但是怎么能被数据收到呢??
需求:
1,定义UDPsocket服务。
2,定义一个数据包,因为要存储接受到的字节数据。因为数据包对象中有更多功能可以提取字节数据中
的不同数据信息。
3,通过Socket服务的receive方法接收到的数据存储已定义好的数据包中。
4,通过数据包对象的特有功能,将这些不同的数据取出,打印在控制台上。
5,关闭资源。
实现代码:
//1 创建udpsocket,创建接受端口
DatagramSocket ds = new DatagramSocket(10000);
//2 定义数据包,用于存储数据
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
//3 用receive方法将数据存到数据包中
ds.receive(dp);
//4 通过数据包的方法解析包中的数据
String ip = dp.getAddress().getHostAddress();
String date = new String(dp.getData(),0,dp.getLength());
int port = ds.getPort();
System.out.println("ip:"+ip+"----内容:"+date+"-----port:"+port);
//5 关闭数据
ds.close();
相关文章推荐
- [网络编程] TCP、UDP区别以及TCP传输原理、拥塞避免、连接建立、连接释放总结
- IPv6下网络编程socket, TCP和UDP例子,以及兼容IPV4和IPV6的类
- java 网络编程【6】 用UDP编写网络聊天程序 以及 TCP编程实例
- 关于网络编程中MTU、TCP、UDP优化配置的一些总结
- 关于网络编程中MTU、TCP、UDP优化配置的一些总结
- 运输层UDP、TCP网络概念辨析以及socket编程流程图示
- 关于网络编程中MTU、TCP、UDP优化配置的一些总结
- IPv6下网络编程socket, TCP和UDP例子,以及兼容IPV4和IPV6的类
- 关于网络编程中MTU、TCP、UDP优化配置的一些总结
- 关于网络编程中MTU、TCP、UDP优化配置的一些总结
- iOS 各种网络编程总结--进程、线程、Socket、HTTP、TCP/IP、TCP和UDP
- IPv6下网络编程socket, TCP和UDP例子,以及兼容IPV4和IPV6的类
- 网络编程之---TCP/IP UDP总结
- (转)iOS 各种网络编程总结--进程、线程、Socket、HTTP、TCP/IP、TCP和UDP
- linux TCP/UDP网络编程总结
- java 基础知识之网络通信(TCP通信、UDP通信、多播以及NIO)总结
- 关于网络编程中MTU、TCP、UDP优化配置的一些总结
- iOS 各种网络编程总结--进程、线程、Socket、HTTP、TCP/IP、TCP和UDP
- 关于网络编程中MTU、TCP、UDP优化配置的一些总结
- linux网络编程之IP协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)和TCP、UDP协议头结构总结