【Java学习笔记】UDP客户端/服务器端

简介: 作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 客户端: import java.net.DatagramPacket; import java.

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/

客户端:

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.io.IOException;
public class UdpClient {
    public static void main(String arg[]) {
        String outstr;
        if(arg.length >= 1)
            outstr = arg[0];
        else
            outstr = "count";
        try {
            DatagramSocket socket = new DatagramSocket();
            byte outblock[] = outstr.getBytes();
            InetAddress address = InetAddress.getLocalHost();
            DatagramPacket outpacket =
                    new DatagramPacket(outblock,outblock.length,address,8765);
            socket.send(outpacket);
            System.out.println("Client sent: " + outstr);
            byte inblock[] = new byte[256];
            DatagramPacket inpacket =
                    new DatagramPacket(inblock,inblock.length);
            socket.receive(inpacket);
            String instr = new String(inpacket.getData(),0,inpacket.getLength());
            System.out.println("Client got: " + instr);
            socket.close();
        } catch(SocketException e) {
            System.out.println(e);
        } catch(UnknownHostException e) {
            System.out.println(e);
        } catch(IOException e) {
            System.out.println(e);
        }
    }
}

服务器端:

import java.net.DatagramSocket;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.io.IOException;
import java.util.Date;
public class UdpServer {
    public static void main(String arg[]) {
        DatagramSocket socket = null;
        int count = 0;
        try {
            socket = new DatagramSocket(8765);
        } catch(IOException e) {
            System.out.println(e);
        }
        while(true) {
            try {
                byte block[] = new byte[256];
                DatagramPacket inpacket
                        = new DatagramPacket(block,block.length);
socket.receive(inpacket);
                int length = inpacket.getLength();
                System.out.println("Length of the data received: " + length);
   byte inblock[] = inpacket.getData();
                String inmsg = new String(inblock,0,length);
                System.out.println("Server got: " + inmsg);
                count++;
                String outmsg;
                if(inmsg.equals("date")) {
                    Date date = new Date();
                    outmsg = date.toString();
                } else if(inmsg.equals("halt")) {
                    socket.close();
                    return;
                } else if(inmsg.equals("count")) {
                    outmsg = "Number of messages: " + count;
                } else {
                    outmsg = "What is " + inmsg + "?";
                }
                byte outblock[] = outmsg.getBytes();
                InetAddress returnaddress = inpacket.getAddress();
                int returnport = inpacket.getPort();
                DatagramPacket outpacket = new DatagramPacket(
                        outblock,outblock.length,returnaddress,returnport);
                socket.send(outpacket);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

 

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/


               作者:gnuhpc
               出处:http://www.cnblogs.com/gnuhpc/
               除非另有声明,本网站采用知识共享“署名 2.5 中国大陆”许可协议授权。


分享到:

目录
相关文章
|
9天前
|
Java
Java使用FileInputStream&&FileOutputStream模拟客户端向服务器端上传文件(单线程)
Java使用FileInputStream&&FileOutputStream模拟客户端向服务器端上传文件(单线程)
25 1
|
15天前
|
API Windows
揭秘网络通信的魔法:Win32多线程技术如何让服务器化身超级英雄,同时与成千上万客户端对话!
【8月更文挑战第16天】在网络编程中,客户/服务器模型让客户端向服务器发送请求并接收响应。Win32 API支持在Windows上构建此类应用。首先要初始化网络环境并通过`socket`函数创建套接字。服务器需绑定地址和端口,使用`bind`和`listen`函数准备接收连接。对每个客户端调用`accept`函数并在新线程中处理。客户端则通过`connect`建立连接,双方可通过`send`和`recv`交换数据。多线程提升服务器处理能力,确保高效响应。
31 6
|
12天前
|
关系型数据库 MySQL Linux
数据类型和运算符(MySQL服务器的安装,MySQL客户端,数据类型,运算符,MySQL的语法规范)
无论是对于初学者还是有经验的开发者,了解MySQL的安装、客户端使用、数据类型、运算符和语法规范都是至关重要的。这不仅有助于高效地管理和查询数据,而且对于设计和实现数据库解决方案来说是基础工作。通过深入学习和实践这些知识,您可以更好地发挥MySQL数据库的强大功能。
13 2
|
14天前
|
网络协议 安全 Unix
6! 用Python脚本演示TCP 服务器与客户端通信过程!
6! 用Python脚本演示TCP 服务器与客户端通信过程!
|
15天前
|
JSON 前端开发 JavaScript
Web中的客户端和服务器端
Web中的客户端和服务器端
|
6天前
|
存储 网络协议 物联网
网络中的“客户端”和“服务器
【8月更文挑战第24天】
18 0
|
16天前
【qt】客户端连接到服务器
【qt】客户端连接到服务器
28 0
|
16天前
|
存储 Ubuntu 开发工具
如何在 Ubuntu VPS 实例上安装 Chef 服务器、工作站和客户端
如何在 Ubuntu VPS 实例上安装 Chef 服务器、工作站和客户端
12 0
|
16天前
|
Java
Java模拟文件发送给服务器,服务器将文件转发给其他用户,并保存到服务器本地,其他用户可以接收,并保存到本地磁盘,支持各种文件格式,并解决通信中服务器怎么区分客户端发来的文件类型
Java模拟文件发送给服务器,服务器将文件转发给其他用户,并保存到服务器本地,其他用户可以接收,并保存到本地磁盘,支持各种文件格式,并解决通信中服务器怎么区分客户端发来的文件类型
|
15天前
|
机器学习/深度学习 编解码 人工智能
阿里云gpu云服务器租用价格:最新收费标准与活动价格及热门实例解析
随着人工智能、大数据和深度学习等领域的快速发展,GPU服务器的需求日益增长。阿里云的GPU服务器凭借强大的计算能力和灵活的资源配置,成为众多用户的首选。很多用户比较关心gpu云服务器的收费标准与活动价格情况,目前计算型gn6v实例云服务器一周价格为2138.27元/1周起,月付价格为3830.00元/1个月起;计算型gn7i实例云服务器一周价格为1793.30元/1周起,月付价格为3213.99元/1个月起;计算型 gn6i实例云服务器一周价格为942.11元/1周起,月付价格为1694.00元/1个月起。本文为大家整理汇总了gpu云服务器的最新收费标准与活动价格情况,以供参考。
阿里云gpu云服务器租用价格:最新收费标准与活动价格及热门实例解析
下一篇
云函数