UDP接收端和发送端_Socket编程

  • UDP接收端


    1. 接收端启动文件
 1 import java.net.DatagramSocket;
 2 import java.net.SocketException;
 3
 4 public class Server {
 5
 6     public static void main(String[] args){
 7
 8         try {
 9
10             DatagramSocket socket = new DatagramSocket(9999);
11             ServerThread sThread = new ServerThread(socket);
12             sThread.start();
13
14         } catch (SocketException e) {
15
16             e.printStackTrace();
17         }
21     }
24 }
    1. 接收端线程文件
 1 import java.io.IOException;
 2 import java.net.DatagramPacket;
 3 import java.net.DatagramSocket;
 4 import java.net.InetAddress;
 5 import java.net.SocketException;
 6
 7 public class ServerThread extends Thread{
 8
 9     DatagramSocket socket = null;
10
11     public ServerThread(DatagramSocket socket) {
12         super();
13         this.socket = socket;
14     }
15
16     @Override
17     public void run() {
18         super.run();
19
20         try {
21 //            socket = new DatagramSocket(9999);
22
23             //建立数据包
24             byte []buf = new byte[1024];
25             DatagramPacket packet = new DatagramPacket(buf, buf.length);
26             System.out.println( "服务器开始运行...." );
27             while(true) {
28
29                 //接收客户端数据
30                 socket.receive(packet);
31
32                 //读取数据包的内容
33                 String data = new String(buf, 0, packet.getLength());
34                 System.out.println("我是服务器,接收到客户端的消息:"+data);
35
36                 //发送,先获取客户端信息
37                 InetAddress address = packet.getAddress();
38                 int port = packet.getPort();
39                 byte []str = "服务器响应:你好".getBytes();
40                 DatagramPacket packet2 = new DatagramPacket(str, str.length,address,port);
41                 socket.send(packet2);
42
43             }
44
45         } catch (SocketException e) {
46             e.printStackTrace();
47         } catch (IOException e) {
48             // TODO Auto-generated catch block
49             e.printStackTrace();
50         }
51         finally {
52             socket.close();
53         }
54
55     }
56 }
  • UDP发送端


 1 import java.io.IOException;
 2 import java.net.DatagramPacket;
 3 import java.net.DatagramSocket;
 4 import java.net.InetAddress;
 5 import java.net.SocketException;
 6 import java.text.SimpleDateFormat;
 7 import java.util.Date;
 8 import java.util.Scanner;
 9
10 public class Client {
11
12     public static void main(String[] args) throws IOException{
13
14         DatagramSocket socket = null;
15
16         try {
17
18             socket = new DatagramSocket();//udp不用端口号
19
20             while(true) {
21                 //时间
22                 Date myDate = new Date();
23                 SimpleDateFormat dFormat = new SimpleDateFormat("HH:mm:ss");
24                 //发送信息
25                 InetAddress address = InetAddress.getLocalHost();//取得服务器地址
26                 int port = 9999;
27
28                 Scanner input = new Scanner(System.in);//改为输入发送
29                 String inContent ="\r\n" +  dFormat.format(myDate) + "\r\n" +"黄哥哥说:"+ input.next();
30
31                 byte []str = inContent.getBytes();
32                 DatagramPacket packet2 = new DatagramPacket(str, str.length,address,port);//InetAddress.getByName( "192.168.4.198" )
33                 socket.send(packet2);
34
35                 //接收信息
36                 //建立数据报包
37                 byte []buf = new byte[1024];
38                 DatagramPacket packet = new DatagramPacket(buf, buf.length);
39
40                 //接收服务器信息
41                 socket.receive(packet);
42
43                 //读取数据包的内容
44                 String data = new String(buf, 0, packet.getLength());
45                 System.out.println(data);
46
47             }
48         } catch (SocketException e) {
49             // TODO Auto-generated catch block
50             e.printStackTrace();
51         }finally {
52             //关闭
53             socket.close();
54         }
55
56     }
57 }

 

  • 运行效果


  1. 发送端发送消息,接收端回应

2.接收端收到的消息

原文地址:https://www.cnblogs.com/ynhwl/p/9434219.html

时间: 2024-10-15 15:58:52

UDP接收端和发送端_Socket编程的相关文章

黑马程序员——UDP接收端与发送端

看了Socket的网络编程,感觉这个东西好神奇啊 下面是Socket的发送端: /*  Socket编程,发送端 1.建立Socket发送端的端口,DatagramSocket 2.将数据进行封装,加入接收端地址和端口号,DatagramPacket 3.发送数据包send() 4.关闭资源 */ import java.io.*; import java.net.*; public class SocketSend{ public static void main(String [] args

UDP学习1(发送端demo)

最近是项目的最后阶段——系统测试,刚好今早有点空余时间,利用这点时间用Java写了一个UDP发送数据的demo,本人最近也正在学习Java(目前在做asp.net web开发),欢迎各位指点刚毕业不久的小菜鸟.下面进入正文. 什么是UDP?UDP就是网络传输协议的其中一种,网络间的应用程序想互相传输数据可以遵循的一种协议.按个人理解,它有以下这几个特点:1.无连接的,通俗点来说发送端无需确认接收端是否开启,不需要建立连接,发送端也可以将数据发送出去,不过这个时候会造成数据包的丢失;2.不可靠的,

c/c++ 网络编程 UDP 发送端 bind 作用

网络编程 UDP 发送端 bind 作用 upd 发送端 调用bind函数的效果:把socket特定到一个指定的端口,如果不调用bind,内核会随机分配一个端口. upd 发送端 调用bind函数的目的:假如有2个发送端,接收端需要识别是从哪个发送端过来的,就可以分别在发送端调用bind函数,这样一来,接收端就能够知道是哪个发送端过来的数据了. 运行方法:先运行[1,先接收再发送],再运行[2,先发送再接收] 1,先接收再发送: #include <stdio.h> #include <

UDP发送端&amp;UDP接收端

UDP发送端: import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; public class UdpSendDemo { public static void main

Java基础知识强化之网络编程笔记04:UDP之发送端的数据来自于键盘录入案例

1. 数据来自于键盘录入 键盘录入数据要自己控制录入结束. 2. 代码实现: (1)发送端: 1 package com.himi.updDemo1; 2 3 import java.io.IOException; 4 import java.net.DatagramPacket; 5 import java.net.DatagramSocket; 6 import java.net.InetAddress; 7 import java.util.Scanner; 8 9 /** 10 * 11

Udp发送端和接收端

//UdpReceive.java /* 定义udp的接收端. 思路: 1.定义udpSocket服务.通常会监听一个端口,其实就是这个接收网络应用程序定义一个数字标示. 2.定义一个数据包,用来存储接收到的字节数据. 因为数据包对象中有特有功能可以提取字节数据中不同数据信息. 3.通过Socket服务的receive方法将收到的数据存入已定义好的数据包中. 4.通过数据包对象的特有功能将这些不同的数据取出,打印到控制台上. 5.关闭资源. */ import java.net.*; publi

socket 网络编程快速入门(二)教你编写基于UDP/TCP的服务端多线程通信

在上一篇博文中,我们介绍了利用socket进行简单的UDP/TCP的服务端和客户端的通信. (一) 在基于UDP的程序中,你有没有想过,如果我的这台主机在通讯的时候要求既能够收到别的主机发来的数据,又能够自己向目的主机发出数据,该怎样实现?也就是说需要两个while循环同时进行.答案是使用多线程,一个线程用于接受数据,另一个线程用来发送数据.接下来我们介绍WinSock的多线程编程. 多线程的实现我们使用_beginthread()函数: uintptr_t _beginthread( void

jrtplib中组播代码发送端和接收端的实现

</pre>文章里面主要是把发送端课接收端代码的实现提了出来,和重要函数里的源码贴出来辅助学习,看到网上有人说好久做不出来,建议看看对应加入组播的源码,注意细节,话不多说,代码直接贴出来,各位朋友有意见多多交流.<p></p><p>发送端:</p><pre code_snippet_id="1677192" snippet_file_name="blog_20160510_2_5720022" nam

【vc】14_网络编程_socket编程

1.计算机网络基本知识 最简单的网络程序如图: 提示:IP地址就相当于一个公司的总机号码,端口号就相当于分机号码.在打电话时,拨通总机后,还需要转到分机上. (1)协议 ·为进行网络中的数据交换(通信)而建立的规则.标准或约定(=语义+语法+规则): ·不同层具有各自不同的协议: (2)网路的状况 ·多种通信媒介---有线.无线··· ·不同种类的设备---通用.专用··· ·不同的操作系统---UNIX.Windows··· ·不同的应用环境---固定.移动··· ·不同的业务种类---分时.