【问题标题】:Server response blank for some reason?出于某种原因,服务器响应空白?
【发布时间】:2019-04-09 21:45:48
【问题描述】:

有一个家庭作业来创建客户端代码以通过 UDP 发送拆分为 2 个变量的字符串。服务器接收并通过将两个拆分变量发送回前端来确认。

由于某种原因,当我运行它时我的响应是空白的,不知道为什么。 有人可以帮忙吗?

当我尝试在另一个代码上使用整数时,它可以工作,但是当我尝试使用字符串时,什么都没有返回。

客户端代码:

import java.io.*;
import java.net.*;
import java.util.Scanner;
public class UDPClient
{
    public static void main (String[] args) throws Exception
    {
        DatagramSocket client = new DatagramSocket();
        InetAddress IPAd = InetAddress.getByName("localhost");
        byte [] sendData1 = new byte[1024];
        byte [] sendData2 = new byte[1024];
        byte [] receiveData = new byte [1024];
        String input = "";
        Scanner in = new Scanner (System.in);
        System.out.println("Enter word: ");
        input = in.nextLine();
        String [] splitWord = input.split("");
        int length = splitWord.length;
        int evenSplit = 0;
        int oddSplit = 0;
        String firstHalf = "";
        String secondHalf  = "";

        if (length%2==0)
        {
            evenSplit = length / 2;
            for (int i=0; i<evenSplit; i++)
                firstHalf += splitWord[i];

            for (int i=evenSplit; i<length;i++)
                secondHalf += splitWord[i];
            }
        else{
            oddSplit = (length+1)/2;
            for (int i=0; i<oddSplit;i++)
                firstHalf += splitWord[i];
            for (int i=oddSplit; i<length;i++)
            secondHalf += splitWord[i];
        }

        sendData1 = firstHalf.getBytes();
        sendData2 = secondHalf.getBytes();
        DatagramPacket sendPacket1 = new DatagramPacket (sendData1, 
sendData1.length, IPAd, 2000);
        DatagramPacket sendPacket2 = new DatagramPacket (sendData2, 
sendData2.length, IPAd, 2000);
        client.send(sendPacket1);
        client.send(sendPacket2);
        DatagramPacket receivePacket = new DatagramPacket (receiveData, 
receiveData.length);
        String serverReply = new String (receivePacket.getData());
        System.out.println ("From server: "  + serverReply);
        client.close();
    }

}

服务器代码:

import java.io.*;
import java.net.*;
public class UDPServer
{
    public static void main (String [] args) throws Exception
    {
        DatagramSocket server = new DatagramSocket (2000);
        byte [] receiveData1 = new byte[1024];
        byte [] receiveData2 = new byte[1024];
        byte [] sendData = new byte [1024];

        while (true)
        {
            DatagramPacket receivePacket1 = new DatagramPacket 
(receiveData1, receiveData1.length);
            server.receive(receivePacket1);
            DatagramPacket receivePacket2 = new DatagramPacket 
(receiveData2, receiveData2.length);
            server.receive(receivePacket2);
            String firstHalfWord = new String (receivePacket1.getData());
            String secondHalfWord = new String (receivePacket2.getData());
            InetAddress IPAd = receivePacket1.getAddress();
            int port = receivePacket1.getPort();
            String response = secondHalfWord + firstHalfWord;
            sendData = response.getBytes();
            DatagramPacket sendPacket = new DatagramPacket (sendData, 
sendData.length, IPAd, port);
            server.send(sendPacket);



        }


    }
}

如果我输入 hello 表示回复 lohel (hel + lo back to front) 它只是返回“来自服务器:”而没有任何字符串响应。

【问题讨论】:

    标签: java networking udp


    【解决方案1】:

    String serverReply = new String(receivePacket.getData());这行之前你需要说client.receive(receivePacket);

    【讨论】:

      猜你喜欢
      • 2021-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-14
      相关资源
      最近更新 更多