当前位置: 首页 > 知识库问答 >
问题:

UDP 客户端服务器平均计算程序 [重复]

壤驷骁
2023-03-14

我想写一个代码,客户端向服务器发送10个整数,然后服务器计算这些数字的平均值,然后服务器将平均值发回客户端,我这样写服务器代码,必须使用特定的inet地址,我应该更改客户端和服务器之间的服务器端口吗?

import java.net.*;
import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;
public class UDP_SERVER {
        
    public static final int SERVICE_PORT = 7;
    public static final int BUFSIZE = 4096;
    byte[] bu = null;
    private DatagramSocket socket;
    public UDP_SERVER(){
        try{
            
            socket = new DatagramSocket( SERVICE_PORT );
           
        }
        catch (Exception e){
            System.err.println ("Unable to bind port");
        }
    }
    public void serviceClients(){
        int sum = 0;
        byte[] buffer = new byte[BUFSIZE];
        for (;;){
            try{
                InetAddress addr = InetAddress.getLocalHost() ;
                try{
                    
                    DatagramPacket packet = new DatagramPacket(buffer, BUFSIZE);
                    socket.receive(packet);
                    ByteArrayInputStream bin = new ByteArrayInputStream(buffer);
                    DataInputStream d1 = new DataInputStream((bin));
                    sum = sum + d1.readInt();
                    
                }
                
                catch (IOException ioe){
                    System.err.println ("Error : " + ioe);
                }
                
                double avg = sum / 10;
                String a1 = Double.toString(avg);
                bu = a1.getBytes();
                DatagramPacket Dps = new DatagramPacket(bu, bu.length,addr, SERVICE_PORT);
                socket.send(Dps);
            }
            
            catch (IOException ex){
                System.err.println ("Error : " + ex);
            }
        }
    }
    public static void main(String args[]){
        UDP_SERVER server = new UDP_SERVER();
        server.serviceClients();
    }
}

我该怎么办?我可以使用哪个net地址?

共有1个答案

贺浩漫
2023-03-14

“BindException:地址已在使用中”表示另一个进程正在使用您尝试使用的端口。是否有另一个正在运行的程序副本,您忘记停止了?

作为“快速解决方案”,尝试使用另一个端口,例如:

public static final int SERVICE_PORT = 7777;

如果你的程序没有使用端口7,有一些Windows工具可以帮助你找到哪个程序正在使用它——看看在Windows上你如何找到哪个进程正在监听一个端口?

 类似资料:
  • 我对使用UDP协议的服务器和客户端之间的通信有一个非常奇怪的问题。客户端是用Mono2x编写的(我使用Unity 3D作为我的客户端)并创建Udp客户端类实例: 我的服务器是 UWP 应用程序,我想在使用 DatagramSocket 的 Raspberry Pi 上运行: 我将数据从客户端发送到服务器,但运气不佳。我用TCPView检查了数据是从我的客户端应用程序发送的,但从未到达服务器。现在是

  • 我目前正在做一个项目,需要一个UDP通信之间的服务器亚马逊法兰克福)和几个主机(Arduino)。我需要能够发送JSON数据从服务器到主机通过UDP,它需要实时工作(时间是一个真正的限制在这里)。此外,主机将定期与服务器通话,通知服务器其状态。 我面临的问题是,虽然我可以ping服务器,但当我创建带有端口的UDP套接字时,我会得到这个错误(对于任何端口): errno99:无法分配请求的地址 我也

  • 问题内容: 我正在尝试使用我一直在努力的客户端/服务器程序实现多线程。我需要允许多个客户端同时连接到服务器。我目前有4类:客户端,服务器,协议和用于处理线程的工作器。以下代码是我对这些类的拥有的代码: SocketServer类: SocketClient类别: 协议类别: ClientWorker类: 当我运行服务器和客户端时,一切正常。然后,当我尝试运行另一个客户端时,它只是挂在那儿,没有提示

  • 我是 python 和套接字的新手,正在尝试编写一个回显客户端/服务器套接字。我已经编写了服务器,以便丢失 30% 的数据包。我将客户端编程为在一秒后超时,因为数据包可能会丢失。但是,每当我运行客户端套接字时,我的输出都是 100% 请求超时。我假设我得到这个输出,因为我的服务器从未收到过消息。我已经多次查看了我的代码,但无法弄清楚为什么我不断获得此输出。下面是我的服务器和客户端套接字的代码。任何

  • 我正在寻找一些关于如何实现一个能够将音频发送到服务器的Java客户端的链接/源代码/教程(见下文)。它将能够发送一个音频文件,然后由服务器接收并通过计算机扬声器播放。 我还想问,对于这种情况,使用UDP或TCP服务器会更好吗?因为我将开发一个android应用程序,它可以录制声音,然后通过电脑扬声器将声音发送到服务器进行实时播放。

  • 当涉及到TCP时,Netty确实有很好的文档记录,但我想尝试一个简单的UDP服务器-客户机示例,但没有找到任何好的代码。(主要是邮件列表和据称有错误代码的用户) 有人愿意提供一些简单的例子吗?谢谢!