黑马程序员_网络编程
2011-09-30 12:59
330 查看
----------------------
android培训、java培训、期待与您交流! ----------------------
1.在TCP/IP协议栈中,有两个高级协议是网络应用程序编写者应该了解的,他们是TCP:传输控制协议和UDP:用户数据报协议。
(1)TCP:需要建立连接。通过三次握手完成连接, 在连接中进行大数据量的传输,是可靠协议,但是效率低。
(2)UDP:将数据及源和目的封装成数据包中,不需要建立连接,速度快,每个数据报的大小在限制在64K内。因无连接,是不可靠协议。
2.Socket
(1)Socket就是为网络服务提供的一种机制。
(2)通信的两端都有Socket。
(3)网络通信其实是Socket间的通信。
(4)数据在连个Socket间通过IO传输。
3.UDP
DatagramSocket类:
构造函数 :public DatagramSocket() 如果UDP不用事先接收对方发送的数据而是主动先给对方发送数据 系统会自动分配未被使用的端口号
public DatagramSocket(int port) UDP有可能要先接收对方发来的数据
public DatagramSocket(int port,InetAddress laddr) 明确指定程序发送和接收数据的IP地址
close() 方法 释放系统为DatagramSocket对象所保留的资源
send(DatagramPacket p)
receive(DatagramPacket p)
DatagramPacket类构造函数:
Public DatagramPacket(byte[] buf,int length) 接收
Public DatagramPacket(byte[] buf,int length,InetAddress address,int port) 发送
下面为例子:
class UdpSend
{
public static void main(String[] args) throws Exception
{
DatagramSocket ds=new DatagramSocket();//创建udp服务,通过DatagramSocket对象。
//确定数据,并封装成数据包。
byte[] buf="udp ni hao".getBytes();
DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByname("192.168.1.254"),10000);
ds.send(dp);//通过Socket服务,将已有的数据包发送出去,通过send方法。
ds.close();//关闭资源。
}
}
class UdpRece
{
public static void main(String[] args) throws Exception
{
//1.创建udp socket,建立端点。
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.geetAddress().getHostAddress();
String data=new String(dp.getData(),0,dp.getLength());
int port=dp.getPort();
System.out.println(ip+"~~~"+data+"~~~"+port);
//5.关闭资源
ds.close();
}
}
----------------------
android培训、java培训、期待与您交流! ---------------------- 详细请查看:http://edu.csdn.net/heima
android培训、java培训、期待与您交流! ----------------------
1.在TCP/IP协议栈中,有两个高级协议是网络应用程序编写者应该了解的,他们是TCP:传输控制协议和UDP:用户数据报协议。
(1)TCP:需要建立连接。通过三次握手完成连接, 在连接中进行大数据量的传输,是可靠协议,但是效率低。
(2)UDP:将数据及源和目的封装成数据包中,不需要建立连接,速度快,每个数据报的大小在限制在64K内。因无连接,是不可靠协议。
2.Socket
(1)Socket就是为网络服务提供的一种机制。
(2)通信的两端都有Socket。
(3)网络通信其实是Socket间的通信。
(4)数据在连个Socket间通过IO传输。
3.UDP
DatagramSocket类:
构造函数 :public DatagramSocket() 如果UDP不用事先接收对方发送的数据而是主动先给对方发送数据 系统会自动分配未被使用的端口号
public DatagramSocket(int port) UDP有可能要先接收对方发来的数据
public DatagramSocket(int port,InetAddress laddr) 明确指定程序发送和接收数据的IP地址
close() 方法 释放系统为DatagramSocket对象所保留的资源
send(DatagramPacket p)
receive(DatagramPacket p)
DatagramPacket类构造函数:
Public DatagramPacket(byte[] buf,int length) 接收
Public DatagramPacket(byte[] buf,int length,InetAddress address,int port) 发送
下面为例子:
class UdpSend
{
public static void main(String[] args) throws Exception
{
DatagramSocket ds=new DatagramSocket();//创建udp服务,通过DatagramSocket对象。
//确定数据,并封装成数据包。
byte[] buf="udp ni hao".getBytes();
DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByname("192.168.1.254"),10000);
ds.send(dp);//通过Socket服务,将已有的数据包发送出去,通过send方法。
ds.close();//关闭资源。
}
}
class UdpRece
{
public static void main(String[] args) throws Exception
{
//1.创建udp socket,建立端点。
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.geetAddress().getHostAddress();
String data=new String(dp.getData(),0,dp.getLength());
int port=dp.getPort();
System.out.println(ip+"~~~"+data+"~~~"+port);
//5.关闭资源
ds.close();
}
}
----------------------
android培训、java培训、期待与您交流! ---------------------- 详细请查看:http://edu.csdn.net/heima
相关文章推荐
- 黑马程序员——网络编程
- 黑马程序员--第二阶段--JAVA网络编程--第24天
- 【黑马程序员】网络编程——Java复习笔记
- 黑马程序员—Socket 网络编程有感
- 黑马程序员__网络编程
- 黑马程序员——网络编程及正则表达式
- 黑马程序员—11、JAVA基础&网络编程
- 黑马程序员----网络编程二
- 黑马程序员--java基础--网络编程
- 黑马程序员 java 网络编程
- 黑马程序员-13-java网络编程-概念及UDP、TCP连接
- 黑马程序员_网络编程(2) TCP
- 黑马程序员--java网络编程
- 黑马程序员__GUI__网络编程
- 黑马程序员_java_网络编程
- 黑马程序员--网络编程
- 黑马程序员-java基础之网络编程
- 黑马程序员_网络编程(非常重要)
- 黑马程序员_Javase 网络编程学习总结
- 黑马程序员-- 网络编程(二)