Итак, я создал серверное и клиентское приложение, использующее UDP / IP Protocol Suite для связи.Я могу получить данные на сервер, но когда они поступают и я пытаюсь разобрать строку в целое число, я получаю исключение NumberFormatException, но когда я печатаю строку перед форматом, я получаю то, что мне нужно, что равно "8".Я разместил свой код ниже:
Сервер
package udp_ip;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.io.*;
public class UDPServer {
static private int destport = 9999;
static private int bufsize = 1024;
private DatagramSocket serverSocket;
private InetAddress local_addr;
private UDPServer()
{
try
{
serverSocket = new DatagramSocket(destport);
}
catch(IOException ioe)
{
System.err.println("Client SOcket could not be created");
}
try
{
local_addr = InetAddress.getLocalHost();
}
catch(Exception uhe)
{
System.err.println("Uknown Host:\tLocalHost");
}
}
private InetAddress getLocalAddress()
{
return this.local_addr;
}
private DatagramSocket getSocket()
{
return serverSocket;
}
public static void main(String args[]) throws Exception
{
UDPServer server = new UDPServer();
DatagramSocket serverSocket = server.getSocket();
byte[] acceptData = new byte[bufsize];
InetAddress local_addr = server.getLocalAddress();
DatagramPacket receiveTestData = new DatagramPacket (acceptData,
acceptData.length);
serverSocket.receive(receiveTestData);
String str = new String(receiveTestData.getData());
System.out.println(str);
int num = Integer.parseInt(str);
int result = num*num;
byte[] testData = (result+"").getBytes();
DatagramPacket sendPacket = new DatagramPacket(testData,
testData.length, local_addr, receiveTestData.getPort());
serverSocket.send(sendPacket);
}
}
Client
package udp_ip;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UDPClient {
static private int destport = 9999;
static private int bufsize = 1024;
private DatagramSocket clientSocket;
private InetAddress local_addr;
private UDPClient()
{
try
{
clientSocket = new DatagramSocket();
}
catch(IOException ioe)
{
System.err.println("Client Socket could not be created");
}
try
{
local_addr = InetAddress.getLocalHost();
}
catch(Exception uhe)
{
System.err.println("Uknown Host:\tLocalHost");
}
}
private InetAddress getLocalAddress()
{
return this.local_addr;
}
private DatagramSocket getSocket()
{
return clientSocket;
}
public static void main(String args[]) throws Exception
{
UDPClient client = new UDPClient();
byte[] targetData = new byte[bufsize];
InetAddress local_addr = client.getLocalAddress();
int testSend = 8;
byte[] testTargetData = String.valueOf(testSend).getBytes();
DatagramPacket testSendPacket = new DatagramPacket(testTargetData,
testTargetData.length, local_addr, destport);
DatagramSocket clientSocket = client.getSocket();
clientSocket.send(testSendPacket);
DatagramPacket acceptTargetData = new DatagramPacket(targetData,
targetData.length);
clientSocket.receive(acceptTargetData);
String str = new String(acceptTargetData.getData());
System.out.println("Server Sent" + str);
}
}
NumberFormatExceptionError