JAVA网络编程 UDP 初学者进
来源:互联网 发布:c语言字符数组赋值 编辑:程序博客网 时间:2024/05/07 01:05
java网络编程 初学者进
对于网络编程,首先你要了解网络基础知识,我先介绍几个,就不详细介绍了
通信协议:计算机网络中实现通信必须有一些约定,即通信协议。对速率、传输代码、代码结构、传输控制步骤、出错控制等制定标准。
TCP协议:提供可靠的数据传输服务的规则。
IP协议进行IP数据包的分割和组装。
IP地址:为实现网络中不同的计算机之间的通信,在网络中的每台机器都必须有一个与众不同的标识,这就是IP地址(IP Address)。
端口:一个16位的整数,用于表示数据交给哪个通信程序处理。
OSI模型
→→→→→→
↓应 用 层 ↓
→→→→→→
↓表 示 层 ↓
→→→→→→
↓会 话 层 ↓
→→→→→→
↓传 输 层 ↓→→→→→TCP
→→→→→→
↓网 络 层 ↓→→→→→IP
→→→→→→
↓数据链路层 ↓
→→→→→→
↓物 理 层 ↓
→→→→→→
JDK中为开发网络应用程序提供了java.net包,该包下的类和接口几乎都是为网络编程服务的。
InetAddress:用于描述IP地址的对象
有2个静态变方法获取InetAddress实例
getByName(String host):根据主机获取对应的InetAddress
getByAddress(byte[] addr):根据原始IP来获取InetAddress
●先来说下UDP 比如聊天用的ICQ和OICQ就是使用的UDP协议。
使用位于JDK中Java.net包下的DatagramSocket可以非常方便地控制用户数据报文。
DatagramSocket类:创建接收和发送UDP的Socket实例。
DatagramSocket():创建实例。通常用于客户端编程,它并没有特定监听的端口,仅仅使用一个临时的。
DatagramSocket(int port):创建实例,并固定监听Port端口的报文。
receive(DatagramPacket d):接收数据报文到d中。receive方法产生一个“阻塞”。
send(DatagramPacket d):发送报文d到目的地。
close():关闭DatagramSocket。在应用程序退出的时候,通常会主动释放资源,关闭Socket。
实例1,编写程序演示使用UDP协议数据报的发送和接受。
发送端
建立udpsocket服务端点。该端点建立,系统会随机分配一个端口。如果不想随机配置,可以手动指定。 DatagramSocket ds = new
DatagramSocket(9002);
将数据进行packet包的封装,必须要指定目的地地址和端口。 byte[] buf = "wo shi shu ju".getBytes(); DatagramPacket dp =new
DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.254"),9001);
通过socket服务的send方法将该包发出。 ds.send(dp);
将socket服务关闭。主要是关闭资源。 ds.close();
代码
package com.csdn.net;
import java.io.*;
import java.net.*;
public class SendDemo {
/**
* @param args
*/
public static void main(String[] args) {
DatagramSocket ds=null;
try {
ds=new DatagramSocket();
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String line=null;
while((line=br.readLine())!=null){
byte[] buf=line.getBytes();
DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName
("192.168.49.66"),9009);
ds.send(dp);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
ds.close();
}
}
}
接收端
建立udp的socket服务。要监听一个端口。 DatagramSocket ds = new DatagramSocket(9001);
定义一个缓冲区,将该缓冲区封装到packet包中。 byte[] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket
(buf,buf.length);
通过socket的receive方法将数据存入数据包中。 ds.receive(dp);
通过数据包dp的方法getData()、getAddress()、getPort()等方法获取包中的指定信息。
关闭socket。 ds.close();
代码
package com.hbsi.net;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
//接收端
public class ReceiveDemo {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
//1.建立udpsocket
DatagramSocket ds=new DatagramSocket(9009);
//2.建立一个数据包来接收数据
byte[] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,buf.length);
//3.接收
ds.receive(dp);
//4.通过数据包对象的方法获取数据
String ip=dp.getAddress().getHostAddress();//get Ip
String data=new String(dp.getData(),0,dp.getLength());//获取收到的内容
int port=dp.getPort();//get端口
System.out.println(ip+":"+data+":"+port);
//5关闭
ds.close();
}
- JAVA网络编程 UDP 初学者进
- java udp网络编程
- java 网络编程 UDP
- java网络编程UDP
- java网络编程---udp
- Java - 网络编程 - UDP
- Java网络编程UDP
- java网络编程---udp
- Java UDP 网络编程
- Java UDP网络编程
- java UDP网络编程
- Java UDP网络编程
- java网络编程 udp
- Java UDP网络编程
- Java网络编程-UDP编程
- java网络编程之UDP
- java网络编程之UDP
- JAVA网络编程 TCP、UDP
- Enterprise Architect 使用笔记
- Scrum实践二——Daily Standup Meeting
- 系统结构
- android中各个部件驱动在源码中的位置
- Eclipse + JDK1.7 + Android SDK4.1 + ADT
- JAVA网络编程 UDP 初学者进
- 11级_Java_曹建波 9.11 Java网络编程
- 瓜,含锌丰富食物,小儿退烧,补钙,感冒咽喉发痒综合
- JAVA网络编程
- 测试设计008:如何有效评估测试用例的质量?
- math.h Log log10
- iOS NSInteger/NSUInteger与int/unsigned int、long/unsigned long之间的区别!
- Codeforces #137 div2
- Android Training - 网络操作(1) - 连接网络