UDP套接字的java实现

UDP套接字的java实现

客户端如下:

import java.io.*;
import java.net.*;
import java.util.Scanner;
/*
 * UDP套接字客户端
 */
public class UDPClient {
    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        BufferedReader inFormUser = new 
                BufferedReader(new InputStreamReader(System.in));   //以缓冲方式输入一段字符串

        //System.out.println(sentence);

        DatagramSocket ClientSocket = new DatagramSocket();         //创建一个套接字
        InetAddress IPAddress = InetAddress.getByName("hostname(你的主机名称)");  //获取本机IP地址
        byte[] sendData = new byte[1024];         //一次发送1024字节
        byte[] receiveData = new byte[1024];      //一次接收1024字节

        String sentence = inFormUser.readLine();  //获取要发送的字节
        sendData = sentence.getBytes();           //将字符串转化为字节
        DatagramPacket sendPacket = new 
                DatagramPacket(sendData, sendData.length,IPAddress,8765);   //创建一个发送数据包

        ClientSocket.send(sendPacket);  //发送
        DatagramPacket receivePacket = new 
                DatagramPacket(receiveData, receiveData.length, IPAddress, 8765);  //创建一个接收的数据包

        ClientSocket.receive(receivePacket); //接收
        String modifiedSentence = new String(receivePacket.getData());  

        System.out.print("FROM Server:\n"+modifiedSentence+"\n");
        ClientSocket.close();
    }

}

服务端如下:

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


/*
 * UDP套接字服务端
 */
public class UDPServer {
    public static void main(String[] args) throws Exception {
        DatagramSocket ServerSocket = new DatagramSocket(8765);   //创建一个端口号为8765的套接字,端口号必须为1024至65535之间
        byte[] receiveData = new byte[1024];   //一次接收1024个字节
        byte[] sendData = new byte[1024];      //一次发送1024个字节
        while(true){
            DatagramPacket receivePacket = new 
            DatagramPacket(receiveData, receiveData.length);   //创建一个数据包
            ServerSocket.receive(receivePacket);               //套接字接收
            String sentence = new String(receivePacket.getData());   //获取接收的数据
            System.out.println(sentence);
            InetAddress IPAssress = receivePacket.getAddress();      //获取IP地址
            int port = receivePacket.getPort();                    //获取端口号
            String capitalizedSentence = sentence.toUpperCase();   //转化为大写字母
            sendData = capitalizedSentence.getBytes();             //转化为字节
            DatagramPacket sendPacket = new                  
            DatagramPacket(sendData,sendData.length,IPAssress,port);
            ServerSocket.send(sendPacket);                         //发送
        }
    }

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值