协议类型 源IP 目的IP 源端口 目的端口 序号 数据
Socket 是这个意思比喻成一个港口码头------Packet 集装箱
在应用程序中创建Socket
调用bind将Socket信息通知给驱动程序,
驱动程序会自动将信息发送到Socket
程序再去处理Socket中的数据
TCP ---serverSocket(Socket 用于服务器、客户端)
UDP----DatagramSocket
import java.net.*;
class UdpSend extends Thread
{
public void run()
{
System.out.println("send is begin");
try
{
DatagramSocket ds=new DatagramSocket();
String strInfo="Hello Udp !";
ds.send (new DatagramPacket
(
strInfo.getBytes(),
strInfo.length(),
InetAddress.getByName("172.16.10.2"),
8000
)
);
}
catch(Exception e)
{
e.printStackTrace();
}
System.out.println("send is over");
System.exit(0);
}
}
class UdpRec extends Thread
{
public void run()
{
System.out.println("receive is begin");
try
{
DatagramSocket ds=new DatagramSocket(8000);
byte [] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,1024);
ds.receive(dp);
System.out.println(new String(dp.getData(),0,dp.getLength()));
System.out.println(dp.getAddress().getHostAddress());
System.out.println(dp.getPort());
ds.close();
}
catch(Exception e)
{
e.printStackTrace();
}
System.out.println("receive is over");
System.exit(0);
}
}
public class Udp
{
public static void main(String[] args) throws Exception
{
//DatagramSocket ds=new DatagramSocket();
//System.out.println(ds.toString());
//byte [] buf=new byte[1024];
//InetAddress ia=new InetAddress("www.126.com");
//DatagramPacket dpr=new DatagramPacket(buf,1024);//用于接收数据
//DatagramPacket dps=new DatagramPacket(buf,1024,InetAddress,port);//用于发送
UdpSend us=new UdpSend();
UdpRec ur=new UdpRec();
ur.start();
us.start();
}
}
receive is begin
send is begin
send is over
Hello Udp !
172.16.10.2
4883
receive is over