---------------------- android培训、java培训、期待与您交流! ----------------------
小知识点总结:
1、 网络编程3要素:IP、端口、传输协议。
2、 各应用程序的端口号不能重复,端口号范围:0~65536;0~1024被系统保留(不建议使用)。
3、 127.0.0.1是本地回还地址;xx.xx.xx.255是该频段的广播地址(建立UDP协议 socket时,该频段的其它IP地址都可收到)。
UDP协议和TCP协议的区别:
UDP 1、面向无连接,不需要建立连接,速度快。
2、将数据封包后发送,每个数据包限制在64K之内
3、不可靠协议
TCP 1、通过三次握手完成连接
2、可进行大数据量传输
3、可靠协议
IP地址操作类:InetAddress
UDP协议类:DatagramSocket、DatagramPacket
TCP协议类:Socket、ServerSocket
以下是2个练习,运用udp的socket进行发送信息
import java.net.InetAddress;
import java.net.DatagramSocket;
import java.net.DatagramPacket;
class udpSend {
public static void main(String args[]) throws Exception{
//1、创建udp服务,通过DatagramSocket对象
DatagramSocket ds = new DatagramSocket();
//2、确定数据,封装成数据报。DatagramPacket(byte[] buf, int length, InetAddress address, int port)
byte bytes[] = "udp is using!".getBytes();
DatagramPacket dp = new DatagramPacket(bytes,bytes.length,InetAddress.getByName("10.20.52.15"),10000);
//3、通过socket服务,将已有的数据发送出去,通过send方法
ds.send(dp);
//4、关闭资源
ds.close();
}
}
class udpReceive {
public static void main(String args[]) throws Exception{
//1、创建udp socket,建立端点
DatagramSocket ds = new DatagramSocket(10000);
//2、定义数据包,用于存储数据
byte bytes[] = new byte[1024];
DatagramPacket dp = new DatagramPacket(bytes,bytes.length);
//通过socket服务的receive方法接收数据并存入数据包中
ds.receive(dp);
//通过数据包中的方法获得其中的数据
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(),0,dp.getLength());
int port = dp.getPort();
System.out.println(ip+"::"+data+"::"+port);
//关闭资源
ds.close();
}
}
import java.io.*;
import java.net.*;
class Send implements Runnable{
private DatagramSocket ds;
public Send(DatagramSocket ds){
this.ds = ds;
}
public void run(){
try{
byte data[] = null;
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
String line = null;
while((line = bufr.readLine())!= null){
if(line.equals("886"))
break;
data = line.getBytes();
DatagramPacket dp = new DatagramPacket(data,data.length,InetAddress.getByName("10.20.52.255"),10000);
ds.send(dp);
}
}catch(Exception e){
throw new RuntimeException("FALSE");
}
}
}
class Rece implements Runnable{
private DatagramSocket ds;
public Rece(DatagramSocket ds){
this.ds = ds;
}
public void run(){
try{
while(true){
byte[] bytes = new byte[1024];
DatagramPacket dp = new DatagramPacket(bytes,bytes.length);
ds.receive(dp);
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(),0,dp.getLength());
System.out.println(ip+"::"+data);
}
}catch(Exception e){
throw new RuntimeException("FALSE");
}
}
}
class ChatDemo{
public static void main(String args[]) throws Exception{
DatagramSocket sendSocket = new DatagramSocket();
DatagramSocket receSocket = new DatagramSocket(10000);
new Thread(new Send(sendSocket)).start();
new Thread(new Rece(receSocket)).start();
}
}
---------------------- android培训、java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima