Java UDP使用Socket进行网络通信(0)

作者 : 卿笃军

原文地址:http://blog.csdn.net/qingdujun/article/details/39300293

下面演示一个程序,用客户端给服务器发送一条信息,服务器收到后,打印在控制面板上。

1)客户端,给服务器发送数据

2)服务器,收到数据后,打印在控制面板上

一、客户端,主要步骤:

1)创建udp服务。通过DatagramSocket对象。

2)创建数据,并封装成数据包。

3)通过Socket服务,将已有数据包发送出去。通过send方式。

4)关闭资源。

客户端,发送数据代码如下:

[java] view plaincopyprint?

  1. package udp.send.qdj;
  2. import java.net.DatagramPacket;
  3. import java.net.DatagramSocket;
  4. import java.net.InetAddress;
  5. //Udp发送端
  6. public class CUdpsend {
  7. public static void main(String[] args) throws Exception {
  8. //1.创建udp服务。通过DatagramSocket对象。
  9. DatagramSocket ds = new DatagramSocket(1234);
  10. //2.创建数据,并封装成数据包。
  11. //DatagramPacket(byte[] buf, int length, InetAddress address, int port)
  12. //构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
  13. byte[] buf = "udp send from Server".getBytes();
  14. DatagramPacket dp = new DatagramPacket(buf, buf.length,InetAddress.getByName("10.100.56.210"),10000);
  15. //3.通过Socket服务,将已有数据包发送出去。通过send方式。
  16. ds.send(dp);
  17. //4.关闭资源
  18. ds.close();
  19. }
  20. }

二、服务器端,主要步骤如下:

1)创建Udp Socket,建立端点。监听一个端口,其实就是给这个网络程序一个数字标示,方便与明确,哪些数据该应用程序可以处理。

2)定义数据包。用于储存数据。

3)通过服务的receive方法将收到数据存入数据包中。

4)通过数据包的方法获取其中的数据。

5)关闭资源。

服务器端,接受数据并打印在控制面板上,代码如下:

[java] view plaincopyprint?

  1. package udp.rece.qdj;
  2. import java.net.DatagramPacket;
  3. import java.net.DatagramSocket;
  4. //Udp接收端
  5. public class CUdprece {
  6. public static void main(String[] args) throws Exception{
  7. //1.创建Udp Socket,建立端点。监听一个端口,其实就是给这个网络程序一个数字标示,
  8. //方便与明确,哪些数据该应用程序可以处理。
  9. DatagramSocket ds = new DatagramSocket(10000);
  10. //2.定义数据包。用于储存数据。
  11. byte[] buf = new byte[1024];
  12. DatagramPacket dp = new DatagramPacket(buf,buf.length);
  13. //3.通过服务的receive方法将收到数据存入数据包中。
  14. //此方法为阻塞式方法,没数据接受时,处于阻塞状态。
  15. ds.receive(dp);
  16. //4.通过数据包的方法获取其中的数据。
  17. //获得ip地址
  18. String ip = dp.getAddress().getHostAddress();
  19. //获得传送数据
  20. String data = new String(dp.getData(),0,dp.getLength());
  21. //获得端口号
  22. int port = dp.getPort();
  23. System.out.println("ip地址:"+ip+"\n发送内容data:"+data+"\n端口号port:"+port);
  24. //5.关闭资源
  25. ds.close();
  26. }
  27. }

运行结果显示:

参考文献:Java视频 毕向东 主讲

原文地址:http://blog.csdn.net/qingdujun/article/details/39300293

时间: 2024-11-12 05:57:48

Java UDP使用Socket进行网络通信(0)的相关文章

Java TCP使用Socket进行网络通信(3)

作者 : 卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/39322051 本文演示,TCP使用Socket进行网络通信,建立简单的客户端,并使用客户端给服务器发送一条消息,服务端接收到后,将数据打印在控制台上. 1)客户端,发送一个消息给服务端. 2)服务端,接收到客户端的消息,并打印在控制台上. 客户端,代码如下: package tcp.clinet.qdj; import java.io.OutputStream; impo

Java TCP使用Socket进行网络通信(4)之往返发送

作者 : 卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/39322613 本文演示,TCP使用Socket进行网络通信,实现客户端与服务器端数据的往返发送. 1)客户端,给服务器发送消息,并将接受到的服务器消息打印在客户端控制台上. 2)服务端,接受客户端消息,并打印在服务器开端控制台上,同时给客户端回复收到消息. 客户端,代码如下: package tcp.client2.qdj; import java.io.InputStr

Java UDP使用Socket进行网络聊天(1)

作者 : 卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/39312065 本文演示,使用Socket进行网络聊天,实现客户端给服务器端一直发送消息,当发送“886”的时候,表示客户端关闭. 1)客户端,给服务器发送数据,发送“886”表示关闭客户端. 2)服务器,一直监听9527端口,将监听到的数据打印在控制台上. 一.客户端:主要使用了从键盘录入,和当发送“886”数据包的时候,关闭客户端. [java] view plainc

Java UDP使用Socket进行网络聊天(2)之群聊版

作者 : 卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/39312241 本文演示,使用Socket进行网络聊天之群聊,实现客户端给"局域网"网段里面的所以机器发送广播,当发送“886”的时候,表示客户端关闭. 1)客户端,给服务器发送数据,发送“886”表示关闭客户端. 2)服务器,一直监听9527端口,将监听到的数据打印在控制台上. 3)客户端+服务器版本,实现既可以发送数据,又可以接受数据的多线程聊天程序. 需要注

[java]基于UDP的Socket通信Demo

java课编程作业:在老师给的demo的基础上实现客户端发送数据到服务器端,服务器端接受客户端后进行数据广播. 整体功能类似于聊天室,代码部分不是太难,但是在本机测试的时候出现这样的问题: 服务端通过将每一个Socket客户端的IP存入Set集合,每次接受到数据后都向当前所有的IP转发.但是本机演示的时候所有开的ChatClient客户端都是同一IP,怎么测试呢? 解决办法就是本机测试时候服务端向多个不同的端口转发就好了,这样跑起来的客户端是在不同端口上进行监听的(只是为了实现广播,实际应用下还

Java UDP Socket编程

UDP协议 UDP协议提供的服务不同于TCP协议的端到端服务,它是面向非连接的,属不可靠协议,UDP套接字在使用前不需要进行连接.实际上,UDP协议实现了两个功能: 1)在IP协议的基础上添加了端口: 2)对传输过程中可能产生的数据错误进行了检测,并抛弃已经损坏的数据. UDP的Java支持 Java通过DatagramPacket类和DatagramSocket类来使用UDP套接字,客户端和服务器端都通过DatagramSocket的send()方法和receive()方法来发送和接收数据,用

IntelliJ IDEA 启动tomcat 报错: idea Unable to open debugger port (127.0.0.1:58233): java.net.SocketException "socket closed"

debug启动项目弹出提示 Error running omp: Unable to open debugger port (127.0.0.1:50812): java.net.SocketException "socket closed" 错误.导致tomcat服务器无法启动. 1.根据端口号"80"查找进程号netstat -ano|findstr "80"TCP    0.0.0.0:80             0.0.0.0:0  

解决idea启动项目报错:Unable to open debugger port(127.0.0.1:60157):java.net.SocketException"socket closed

1.问题描述: 工作当中免不了要重启服务,debug模式下偶尔启动项目,却启动失败报错: Unable to open debugger port (127.0.0.1:60157): java.net.SocketException "socket closed" 2.原因分析 出现这个报错的原因是因为端口被占用导致的 3.解决方法 解决方法主要两种:修改端口配置(推荐).关闭占用端口的进程(不推荐). 方式一:修改端口配置(推荐)   被占用的端口可能是本地端口,也可能是JMX端口

读懂Java中的Socket编程(转)

Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的Socket编程,并且如何写一个客户端/服务器程序. 餐前甜点 Unix的输入输出(IO)系统遵循Open-Read-Write-Close这样的操作范本.当一个用户进程进行IO操作之前,它需要调用Open来指定并获取待操作文件或设备读取或写入的权限.一旦IO操作对象被打开,那么这个用户进程可以对这个