网络编程-UDP程序实例(基础)

 1 package com.yyq;
 2
 3 import java.net.DatagramPacket;
 4 import java.net.DatagramSocket;
 5 import java.net.InetAddress;
 6 import java.net.Socket;
 7 import java.net.SocketException;
 8 import java.nio.charset.MalformedInputException;
 9
10 /*
11  * Socket(插座): 为网络服务提供的 一种机制
12  *              通信的两端都有socket
13  *              网络通信其实就在Socket间的通信
14  *              网络在两个Socket间通过IO传输
15  */
16 /*
17  *需求:通过udp传输方式,将一段文字数据发送出去
18  * 思路:1.先建立updsocket服务(端点)
19  *     2.提供数据,并将数据封装到数据包中
20  *     3.通过socket服务的发送功能,将数据包发送出去
21  *     4.关闭资源
22  */
23 public class UDPSend{
24     public static void main(String[] args) throws Exception {
25         //1.创建upd服务,通过DatagramSocket对象
26         DatagramSocket ds = new DatagramSocket(8999);
27         //2.确定数据,并封装成数据包
28         /*
29          * DatagramPacket(byte[] buf, int length, InetAddress address, int port)
30               构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
31          */
32         byte[] buf = "udp wo yao xue hui".getBytes();
33         DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getLocalHost(),4444);
34         //3.通过socket服务,将已有的数据包发送出去,通过send方法发送
35         ds.send(dp);
36         //4.关闭资源
37         System.out.println("发送成功!!");
38     }
39 }
40
41
42
43
44 package com.yyq;
45
46 import java.net.DatagramPacket;
47 import java.net.DatagramSocket;
48
49 /*
50  * 需求:定义一个应用程序,用于接收数据并处理的
51  * 定义udp服务,通常会监听一个端口,其实就是给这个接受网络应用程序定义数字标识
52  * 方便与明确哪些应用程序过来该程序可以处理。
53  * 思路:
54  *     1.定义updsocket 服务
55  *  2.提取数据信息,在数据包中有相对应的功能解封数据包
56  *  所以要定义数据包,因为要存储接收到的字节数据,因为数据包对象中有更多
57  *  的功能可以提取字节数据中的不同数据信息
58  *  3.通过socket服务的receive方法,将受到的数据存入到已定义好的数据包中
59  *  4.通过数据包对象的特有功能,将这些不同的数据取出,打印在控制台上
60  *  5.关闭资源。
61  */
62 public class UDPRece {
63     public static void main(String[] args)throws Exception {
64
65         //1.创建 upd socket,建立端点
66         DatagramSocket ds = new DatagramSocket(4444);
67         while(true){
68         //2.定义数据包,用于存储数据
69         byte[] buf = new byte[1024];
70         DatagramPacket dp = new DatagramPacket(buf,buf.length);
71         //3. 通过服务的receive 方法将数据存入到数据包中
72         // 阻塞式方法  ---receive 方法
73         ds.receive(dp);
74         //4.通过数据包的方法获取其中的数据
75         String ip = dp.getAddress().getHostAddress();
76         String data = new String(dp.getData(),0,dp.getLength());
77         int s = dp.getPort();
78         System.out.println(ip + ":" + data+":"+s);
79
80         }
81         //ds.close();
82     }
83 }
时间: 2024-08-01 21:02:29

网络编程-UDP程序实例(基础)的相关文章

网络编程-TCP程序实例(client端heserver端相互通信)

1 package com.yyq; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.io.OutputStream; 6 import java.net.InetAddress; 7 import java.net.Socket; 8 9 10 /* 11 * 演示tcp的传输的客户端和服务端的互访 12 * 需求:客户端给服务端发送数据服务端获取信息后给客户端回送数据 13 */ 14 /

网络编程-TCP程序实例(只是发送了数据,在服务器显示)

package com.yyq; import java.io.IOException; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; /* * tcp传输 * 1,tcp分为客户端和服务端 * 2,客户端对应的对象是socket * 服务器端对性的对象是serversocket */ /* * 客户端

网络编程-UDP程序聊天小程序

1 package com.yyq; 2 3 import java.io.BufferedReader; 4 import java.io.InputStream; 5 import java.io.InputStreamReader; 6 import java.net.DatagramPacket; 7 import java.net.DatagramSocket; 8 import java.net.InetAddress; 9 import java.net.SocketExcepti

网络编程-TCP程序实例(上传文件)

package netTest; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.InetAddress; import java.net.Socket; impo

网络编程-TCP程序实例(简单上传图片)

package netTest; /* * 客户端: * 1.服务端点 * 2.读取客户端已有的图片数据 * 3.通过socket输出流将数据发给服务端 * 4.读取服务端的反馈信息 * 5.关闭. * */ import java.io.*; import java.net.*; import java.util.concurrent.SynchronousQueue; public class Client { public static void main(String[] args) t

黑马程序员 网络编程 UDP与TCP

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ----------------------/* 网络编程分为两种模式:TCP和UDP 连接互联网的计算机以亿计,为了唯一的标识出每台电脑,互联网就给每台电脑分配一个 唯一独立的ip地址,通过这个ip地址就可以进行计算机之间的数据交换 我们计算机交换的数据功能我们在java中把它封住成一个叫Socket的类, 简称套接字, 端口号:计算机数据的交换一般都是电脑上的程序来维护的,而电脑上又运

Socket网络编程--聊天程序(8)

上一节已经完成了对用户的身份验证了,既然有了验证,那么接下来就能对不同的客户端进行区分了,所以这一节讲实现私聊功能.就是通过服务器对客户端的数据进行转发到特定的用户上, 实现私聊功能的聊天程序 实现的技术细节是:对客户端发送的数据增加一个标识头,由于我们处理的是纯文本,所以为了讲解的方便就把标识头加到聊天信息的前面,然后在服务器中判断.如果是要在做成产品的话,因为要考虑传送纯文本,图片,文件,特定的结构体等等其他非纯文本信息,那么我们可以对一次聊天信息,发送两次数据,第一次用TCP发送一个结构体

Socket网络编程--聊天程序(5)

上一小节我们讲了使用select来避免使用多进程的资源浪费问题.上次只是实现了从多个客户端发送数据给服务器端,接下来就要实现从服务器端发送数据给各个服务器. 使用select多路转换处理聊天程序2 client.c 使用上一节用的那个,在那个基础上修改下面几句 66 //send-recv 一些返回指没有判断,具体可以看server.c 67 if((pid=fork())<0) 68 { 69 perror("fork error\n"); 70 } 71 else if(pi

c/c++ 网络编程 UDP 改变网卡的硬件地址

网络编程 UDP 改变网卡的硬件地址 在程序里动态改变网卡的硬件地址 1,取得网卡的硬件地址 #include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/ioctl.h> #include <netinet/in.h> #include <