Java UDP客户端服务器平均计算程序
我想写一个代码,客户端向服务器发送10个整数,然后服务器计算这些数字的平均值,然后服务器将平均值发送回客户端。我这样写服务器代码,我必须使用特定的inet地址,我是否应该更改客户端和服务器之间的服务器端口Java UDP客户端服务器平均计算程序,java,networking,network-programming,udp,Java,Networking,Network Programming,Udp,我想写一个代码,客户端向服务器发送10个整数,然后服务器计算这些数字的平均值,然后服务器将平均值发送回客户端。我这样写服务器代码,我必须使用特定的inet地址,我是否应该更改客户端和服务器之间的服务器端口 import java.net.*; import java.io.*; import java.util.logging.Level; import java.util.logging.Logger; public class UDP_SERVER { public
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();
}
}
我该怎么办?我可以使用哪个inet地址?“BindException:地址已在使用”表示另一个进程正在使用您尝试使用的端口。是否有另一个程序副本正在运行,而您忘记停止了
作为“快速修复”,请尝试使用其他端口,例如:
public static final int SERVICE_PORT = 7777;
如果您的程序未使用端口7,您可以使用Windows工具查找使用该端口的程序-请参见除了“无法绑定端口”之外,您是否获得有关错误的详细信息?请复制并粘贴完整的错误消息PleaseEnable to bind port Exception in thread“main”java.lang.NullPointerException at UDP_SERVER.serviceClients(UDP_SERVER.java:28)at UDP_SERVER.main(UDP_SERVER.java:54)java结果:1这不是真正的错误。将
System.err.println(“无法绑定端口”)
替换为e.printStackTrace()
,以查看真正的错误。另外,您能否告诉我们您使用的是哪种操作系统,因为错误可能与此有关?java.net.BindException:地址已在使用:无法在UDP_服务器上的线程“main”java.lang.NullPointerException中绑定异常。在UDP_服务器上的服务客户端(UDP_服务器.java:28)在UDP_服务器上。main(UDP_服务器.java:54)java结果:1I使用windows 10