一.网络编程三要素:
1).IP:
2).端口:
3).协议:
UDP:
1.数据要打包;
2.数据包大小有限制:64K
3.面向无连接,效率高,但是不可靠;
TCP:
1.数据大小无限制;
2.面向特定连接,效率低(需要三次握手),但是是可靠连接;
二.UDP协议:
1).发送端:
//1.实例化一个DatagramSocket对象
DatagramSocket socket = new DatagramSocket();
//2.准备数据
InetAddress ip = InetAddress.getByName("127.0.0.1");
int port = 9999;
byte[] byteArray = "你好".getBytes();
//3.准备一个数据包对象
DatagramPacket pck = new DatagraPacket(byteArray,
byteArray.length,
ip,
port);
//4.调用socket的send()方法发送
socket.send(pck);
//5.释放资源
socket.close();
2).接收端:
//1.实例化一个DatagramSocket
DatagramSocket socket = new DatagramSocket(9999);
//2.准备空的byte[]数组
byte[] byteArray = new byte[1024];
//3.准备一个空的数据包对象
DatagramPacket pck = new DatagramPacket(byteArray,
byteArray.length);
//4.接收数据
socket.receive(pck);
//5.解析数据
byteArray = pck.getData();
String str = new String(byteArray,0,pck.getLength());
System.out.println("接收到数据:" + str);
//6.释放资源
socket.close();
三.TCP协议:
1).发送端:
//1.实例化一个Socket
Socket socket = new Socket("127.0.0.1",9999);
//2.获取输出流
OutputStream out = socket.getOutputStream();
//3.输出数据
out.write("你好".getBytes());
//4.释放资源
socket.close();
2).接收端:
//1.实例化一个ServerSocket
ServerSocket server = new ServerSocket(9999);//如果此端口被占用,这里会抛出异常
//2.等待连接
Socket socket = server.accept();
//3.获取输入流
InputStream in =socket.getInputStream();
//4.读取数据
byte[] byteArray = new byte[1024];
int len = in.read(byteArray);
String str = new String(byteArray,0,len);
System.out.println("接收到数据:" + str);
//5.释放资源
socket.close();
server.close();
|
|