java socket 基于UDP/IP 协议

Java  socket 基于UDP/IP协议应用

服务器端:  1、创建DatagramSocket,指定端口号

2、创建DatagramPacket

3、接收客户端发送的数据

4、读取数据

客户端:

1、  定义发送信息: 服务器的IP 端口号  发送的内容

2、  创建DatagramPacket,包含将要发送的信息

3、  创建DatagramSocket

4、  发送数据

服务器端

import java.io.IOException;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

import java.net.SocketException;

/**

* 服务器端,实现基于UDP的用户登录

* Created by Jim Calark on 2017/3/19.

*/

public class UDPServer {

public static void main(String[]
args)  throws  SocketException , IOException{

//1、创建服务器端DatagramSocket,指定端口

DatagramSocket datagramSocket = new DatagramSocket(8800);

//2、创建数据报,用于接受客户端发送的数据

byte []
data = new byte[ 1024];//创建字节数组,指定接受的数据报的大小

DatagramPacket datagramPacket = new DatagramPacket(data,data.length);

//3、接收客户端发送的数据

System.out.println("服务器已经开启,等待客户端的连接");

//此方法在接收到数据之前会一直阻塞

datagramSocket.receive(datagramPacket);

//4、读取客户端发送的数据

//参数:
data 要转换的数组 0 从数组的下标0 开始  datagramPacket.getLength() 长度为接收到的长度

String info = new String(data,0,datagramPacket.getLength());

System.out.println("这里是服务器,客户端发来的消息:--"+info);

/**

向客户端进行响应

*/

//1、定义客户端的地址、端口号、数据

//获取客户端
ip地址

InetAddress inetAddress = datagramPacket.getAddress();

//获取客户端端口号

int port
= datagramPacket.getPort();

//将要响应的内容保存到byte数组中

byte []
data2 = "欢迎您!".getBytes();

//2创建数据报,包含响应的数据信息

DatagramPacket datagramPacket12 = new DatagramPacket(data2,data2.length,inetAddress,port);

//3、响应客户端

datagramSocket.send(datagramPacket12);

//4、关闭资源

datagramSocket.close();

}

}

客户端

import java.io.IOException;
import java.net.*;

/**UDP 客户端
 * Created by Jim Calark on 2017/3/19.
 */
public class UDPClient {
    public static void main(String[] args) throws UnknownHostException  , SocketException,IOException{
        //1、定义服务器地址、端口号、数据
        InetAddress inetAddress = InetAddress.getByName("localhost");
        int port = 8800;
        byte [] data = "用户名: 最帅的;密码: 123".getBytes();
        //2、创建数据报,包含发送的信息
        DatagramPacket datagramPacket = new DatagramPacket(data,data.length,inetAddress,port);
        //3、创建DatagramSocket对象
        DatagramSocket datagramSocket = new DatagramSocket();
        //4、向服务器端发送数据报
        datagramSocket.send(datagramPacket);

        /**
         * 客户端接收服务器端响应信息
         *
         */
        //1、创建数据报,用于接收服务器端响应数据,数据保存到字节数组中
        byte [] data2 = new byte[1024];
        DatagramPacket datagramPacket1 =new DatagramPacket(data2 ,data2.length);
        //2、接收服务器响应的数据
        datagramSocket.receive(datagramPacket1);
        //3、读取数据
        String reply = new String(data2,0,datagramPacket1.getLength());
        System.out.println("这里是客户端,服务器端发来的消息:--"+ reply);
        //4、关闭资源
        datagramSocket.close();

    }
}
时间: 2024-11-04 12:55:54

java socket 基于UDP/IP 协议的相关文章

java socket 基于TCP/IP 协议

Java socket 基于TCP/IP 协议应用 多线程服务器原理: 1.          服务器端创建serversocket并绑定要监听的端口号 ,循环调用serversoket 的accept()方法,等待客户端的连接请求 2.          客户端创建一个socket绑定服务器端的IP地址和服务器监听的端口号并请求和服务器端连接 3.          服务器端接收到客户端的请求后,创建一个socket与客户端建立专线连接 4.          建立连接的两个socket在一个

socket http tcp udp ip 协议

Socket可以支持不同的传输层协议(TCP或UDP),当使用TCP协议进行连接时,该Socket连接就是一个TCP连接. socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信 实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议. socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API

基于 TCP/IP 协议的网络编程

在说明基于 TCP/IP 协议的网络编程之前,先来了解一下 Socket(网络套接字): 利用套接字(Socket)开发网络应用程序早已被广泛的采用,以至于成为事实上的标准 通信的两端都要有 Socket,是两台机器间通信的端点(API 原话) 网络通信其实就是 Socket 间的通信 Socket 允许程序把网络连接当成一个流,数据在两个 Socket 间通过 IO 传输 一般主动发起通信的应用程序属客户端,等待通信请求的为服务端 网络编程某种程度上可以称作"Socket 编程" T

TCP,UDP,IP 协议简析

现在的操作系统基本都实现了TCP/IP协议,TCP/IP协议栈分为五层: 应用层:向用户提供的一组常用的应用程序,如TELNET,FTP,SMTP,SNTP,DNS,HTTP,这些应用程序有一个端口用来标识. 传输层:主要协议是TCP和UDP,提供应用程序的通信. 网络层:主要协议是IP协议,定义了IP地址格式,是不同应用程序的数据在网络上通畅传输的关键. 链路层:这是TCP/IP软件的最低层,负责接收IP数据包并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层. 物理层: 每

socket 基于udp实现远程执行命令

server.py # socket 基于udp实现远程执行命令 from socket import * import subprocess ip_port = ('127.0.0.1', 8080) buffer_size = 1024 udp_server = socket(AF_INET, SOCK_DGRAM) udp_server.bind(ip_port) while True: cmd, addr = udp_server.recvfrom(buffer_size) cmd =

Java中基于UDP协议的的网络编程(基础篇)

---恢复内容开始--- 一:什么是网络编程? 通俗的来说, 网络编程就是编写程序,让联网的两个或多个设备(例如计算机)之间进行数据传输.Java语言也支持网络编程,JDK提供的 java.net包提供了很多于网络编程相关的类,来支持网络编程方面的学习. 二:java网络编程所使用的协议? 有了计算机网络的基础,我们不难理解,在java中,网络编程是基于网络传输协议的. java网络编程,可以是基于TCP协议的,也可以基于UDP协议的.那么首先我们得知道tcp协议和udp两种协议的区别. 区别:

(转)TCP/IP协议与UDP/IP协议的区别

TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议, 也就是说,在收发数据前,必须和对方建立可靠的连接. 一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,只简单的描述下这三次对话的简单过程: A ---> B //主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话: A <--- B //主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作) //的数据包:“可以

基于TCP的协议,基于UDP的协议

TCP与UDP区别 TCP---传输控制协议,提供的是面向连接.可靠的字节流服务.当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据.TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端. UDP---用户数据报协议,是一个简单的面向数据报的运输层协议.UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地.由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故

网络通信-在浏览器输入url,基于TCP/IP协议的解释

知识点1: 网络模型 TCP/IP四层 和ISO七层模型 (统一省略后面层字.比如传输代表传输层) 知识点2: 在应用层中TCP建立连接,经历的三次握手协议 首先:,TCP协议是什么? 为什么要三次握手? 答:TCP协议是面向连接的,而且是点对点的可靠(无差错.不丢失.不重复.按顺序)数据传输服务,他的一些特点,字节流.连接建立后随时传输数据, 其次,握手的目的是在通知对方自己的初始化序号(Initial Sequence Number),简称ISN,保证数据不混乱. 然后: 三次握手的过程是什