网络编程2-UDP编程(DatagramSocket)

1、传输层有两个协议,一个是tcp协议,另一个是udp协议,tcp协议通过socket编程。udp通过数据报编程。

UDP协议:

(1)将数据、源地址、目的地址 封装成数据包,不需要建立链接

(2)每个数据包限制在64K以内

(3)不可靠

(4)无需释放资源,速度快

2?(1)类DatagramSocket和DatagramPacket可实现udp编程

(2)DatagramPacket(数据包)里面装有,发送者地址,接收者地址,端口,和数据,DatagraSocket发送数据包

(3)系统不保证能否把数据送达目的地,也不一定什么时候到达

(4)数据包,有发送者接收者地址,所以发送前不用建立连接,不需要三次握手。

3、例子,注意事项在离子里面

package com.udp.test;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

import org.junit.Test;

public class TestUDP {
    private static String SERVER_HOST = "127.0.0.1";

    //发送端(和socket的客户端注意区别)
    @Test
    public void send(){
        //1、创建DatagramSocket对象
        DatagramSocket ds = null;
        try {
            ds = new DatagramSocket();
            //2、获取要传输的信息,创建数据包对象
            byte [] b = "Hello I am UDP test".getBytes();
            DatagramPacket dp = new DatagramPacket(b, 0, b.length,InetAddress.getByName(SERVER_HOST),8090);
            //3、发送数据包
            ds.send(dp);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            //4、关闭socket连接
            if(ds != null){
                ds.close();
            }
        }
    }

    //接受端(和socket的服务端区别)
    @Test
    public void receive(){
        //1、创建DatagramSocket对像
        DatagramSocket ds = null;
        try {
            ds = new DatagramSocket(8090);
            //2、创建数据包对象
            byte [] b = new byte[64];
            DatagramPacket dp = new DatagramPacket(b,0,b.length);
            //3、接收
            ds.receive(dp);
            //4、存到字符串dp.getData()方法
            String str = new String(dp.getData(),0,dp.getData().length);
            System.out.println(str);
        } catch (SocketException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{

            //5、关闭ds
            if(ds != null ){
                ds.close();
            }

        }

    }
}
时间: 2024-10-19 07:32:56

网络编程2-UDP编程(DatagramSocket)的相关文章

网络编程之UDP编程

网络编程之UDP编程 UDP协议是一种不可靠的网络协议,它在通信的2端各建立一个Socket,但是这个Socket之间并没有虚拟链路,这2个Socket只是发送和接受数据的对象,Java提供了DatagramSocket对象作为基于UDP协议的Socket,使用DatagramPacket代表DatagramSocket发送和接受数据报.值得注意的是:UDP编程必须先由客户端发出信息.一个客户端就是一封信,Socket相当于美国式邮筒(信件的收发都在一个邮筒中).端口与协议相关,所以TCP的30

linux网络编程--tcp/udp编程模型

tcp 模型如下: 上面的模型已经很清楚了 具体函数用法就不细说了 请看tcp简单的例子: 其中server.c #include <stdio.h>#include <string.h>#include <stdlib.h>#include <sys/socket.h>#include <sys/types.h>#include <netinet/in.h>#include <arpa/inet.h> #define e

3socket编程:UDP编程

 1 C/S模型-UDP UDP处理模型 说明: 由于UDP不需要维护连接,程序逻辑简单了很多,但是UDP协议是不可靠的,实际上有很多保证通讯可靠性的机制需要在应用层实现. 编译运行server,在两个终端里各开一个client与server交互,看看server是否具有并 发服务的能力.用Ctrl+C关闭server,然后再运行server,看此时client还能否和server联 系上.和前面TCP程序的运行结果相比较,体会无连接的含义. 2 案例说明: Server.c #includ

嵌入式 Linux网络编程(三)——UDP编程模型

嵌入式 Linux网络编程(三)--UDP编程模型 UDP编程模型: UDP循环服务器模型为: socket(...); bind(...); while(1) {    recvfrom(...);    process(...);    sendto(...); } server.c代码: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #inc

37 - 网络编程-UDP编程

目录 1 UDP协议 2 UDP通信流程 3 UDP编程 3.1 构建服务端 3.3 常用方法 4 聊天室 5 UDP协议应用 1 UDP协议 UDP是面向无连接的协议,使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就可以直接发数据包.但是,能不能到达就不知道了.虽然用UDP传输数据不可靠,但它的优点是和TCP比,速度快,对于不要求可靠到达的数据,就可以使用UDP协议. 2 UDP通信流程 我们先来了解一下,python的socket的通讯流程: 服务端: 创建Socket

socket udp编程步骤

UDP编程的服务器端一般步骤是:1.创建一个socket,用函数socket():3.绑定IP地址.端口等信息到socket上,用函数bind();4.循环接收发送数据,用函数recvfrom().sendto();5.关闭网络连接: UDP编程的客户端一般步骤是:1.创建一个socket,用函数socket():2.设置对方的IP地址和端口等属性;3.连接服务器,用函数connect(): 若是只是一次发送.接收数据,此函数可不用: 若是循环发送接收,则此处要用connect函数:因为若不用,

Java网络编程(UDP程序设计)

//客户端 package org.udp; import java.net.DatagramPacket; import java.net.DatagramSocket; public class UDPClient { public static void main(String[] args) throws Exception{ DatagramSocket ds = null; byte[] buf = new byte[2014]; DatagramPacket dp = null;

Java笔记二十三.网络编程基础与UDP编程

网络编程基础与UDP编程 转载请表明出处:http://blog.csdn.net/u012637501(嵌入式_小J的天空) 一.网络编程基础 1.TCP/IP协议:TCP/IP协议是一个非常实用的网络应用程序通信协议,包括TCP(传输控制协议)和IP地址(计算机唯一标识号). 2.IP地址:IP在互联网中能唯一标识一台计算机,是每一台计算机的唯一标识(身份证),通过这个标识号来指定接收数据的计算机和识别发送数据的计算机,该标识号即为IP地址. (1)Ipv4:指在计算机中IP地址用4个字节(

linux网络编程笔记——UDP

目前这部分代码会出现阻塞问题,暂时尚未解决 #include "udp.h" #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <malloc.h> #include <sys/types.h> #include <sys/socket

网络 套接字编程 TCP、UDP

网络是大端 发数据从低地址发, 先发的是 高位的数据. 收数据从高位收,先收到的数据存放到低地址. TCP 是 流式的 所用套接字也是流式的 文件描述符 socket 是 IP 加 端口号 用到的函数:         int socket(int domain, int type, int protocol);        int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);        #include <s