我目前正在编写两个java类(客户端和服务器)。客户端接收输入数字表单键盘并将其发送到服务器。服务器然后将这个数字乘以2并将其发送回客户端。这些数字也应打印沿途筛选,例如,如果我输入数字3,我应该得到UDP客户端和服务器连接
“从客户:3” “从服务器:6”
他们应该继续这样做,除非客户端收到一个负数,例如数字-3发送到服务器,返回-6。
我有两个班,到目前为止的代码是:
import java.io.*;
import java.net.*;
import java.nio.ByteBuffer;
import java.util.Scanner;
class Client {
public static void main(String args[]) throws Exception
{
DatagramSocket clientSocket = new DatagramSocket();
System.out.println("Insert number: ");
Scanner s= new Scanner(System.in);
int num = s.nextInt();
byte[] sendData = ByteBuffer.allocate(4).putInt(num).array();
InetAddress IPAddress = InetAddress.getByName("localhost");
int port = 1999;
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length , IPAddress ,1999);
clientSocket.send(sendPacket);
BufferedReader userInput = new BufferedReader(new InputStreamReader(System.in));
byte[] receiveData = new byte[4];
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
clientSocket.receive(receivePacket);
int numberReceived = ByteBuffer.wrap(receivePacket.getData()).getInt();
System.out.println("FROM SERVER:" + numberReceived);
clientSocket.close();
}
}
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.nio.ByteBuffer;
class Server {
public static void main(String args[]) throws Exception
{
DatagramSocket serverSocket = new DatagramSocket(1999);
while(true)
{
byte[] receiveData = new byte[4];
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
int num = ByteBuffer.wrap(receivePacket.getData()).getInt();
System.out.println("FROM Client:" + num);
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
int numtosend = num * 2;
byte[] sendData = ByteBuffer.allocate(4).putInt(numtosend).array();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress,port);
serverSocket.send(sendPacket);
}
}
}
目前,当我运行程序我得到的是第一次输入的号码的输出。
有谁能告诉我我哪里出错了吗?
非常感谢提前:)
确定如果我运行服务器主方法并运行客户端,它说我无法运行客户端,因为“我的程序已在运行” – naznaq