Java UDP服务器

标签 java udp

我是 Java 编程新手,我正在尝试创建一个 UDP 服务器。当我编译代码时,它说它无法监听端口 4722,我想知道为什么。下面是代码。如果有任何建议,我将不胜感激。

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


public class Server 
{
public static void main(String[] args) throws IOException 
{
    DatagramSocket serverSocket = new DatagramSocket(4722);
    Socket clientSocket = null;
    byte[] receiveData = new byte[1024];
    byte[] sendData = new byte [1024];      

    boolean command = true;
        try
        {
            serverSocket = new DatagramSocket(4722);
            DatagramPacket receivePacket = new DatagramPacket(receiveData,receiveData.length);
            System.out.println("Waiting for client...");


        } 


        catch (IOException e) 
        {
            System.err.println("Could not listen on port: 4722.");
            System.exit(1);

        }
        DatagramPacket packet = new DatagramPacket (sendData,sendData.length,4722);
        serverSocket.send(packet);



        PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
        BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
        String inputLine, outputLine;
        mathematicalProtocol bbm = new mathematicalProtocol();

        outputLine = bbm.processInput(null);
        out.println(outputLine);

        while ((inputLine = in.readLine()) != null) 
        {
            if(inputLine.equals("Bye."))
            break;
            outputLine = bbm.processInput(inputLine);
            out.println(outputLine);
            if (outputLine.equals("Bye."))

            break;
        }

        out.close();
        in.close();
        clientSocket.close();
        serverSocket.close();
}
}

最佳答案

您正在初始化serverSocket,然后再次在同一端口上创建一个新的DatagramSocket(并且您不能这样做,因为它已经绑定(bind)在第一个 DatagramSocket)。 IE。删除以下行:

        serverSocket = new DatagramSocket(4722);

关于Java UDP服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15597492/

相关文章:

java - 如何使用hibernate和可选参数进行查询?

java - 扩展 JTable 中的键绑定(bind)

c - Linux 上的 UDP 或 TCP 缓冲区大小应该有多大?

C UDP联网,从数据报消息中提取数字

java - 具有多个具有内部调用的微服务的蓝绿部署

java - 线程越多,QuickSort 的性能就越差

c# - Xamarin 说 "Allow Multiple Bind To Same Port only allowed on Windows"。我该怎么办?

Python UDP广播未发送

Golang 和 ffmpeg 实时流输入/输出

java - 如何增加 Java 堆栈跟踪转储的显示行数?