UDP客户端服务器桥

时间:2019-04-11 13:30:21

标签: java sockets server udp client

任务是 通过网桥从客户端向服务器发送消息 和 从服务器通过网桥回复到客户端。

我已经完成了第一部分,但无法完成第二步,即服务器通过网桥回复客户端。

客户端能够通过创建的网桥向服务器发送第一条消息,但是到达服务器后,服务器应使用无效的已修改代码进行回复。

任何接近目标的建议或指导都会有所帮助。

预先感谢

我的代码是

客户

import java.io.*;
import java.net.*;

class UDPClient
{
public static void main(String args[]) throws Exception
{

   //getting input from the user and sending to Bridge
  BufferedReader inFromUser =
     new BufferedReader(new InputStreamReader(System.in));
  DatagramSocket clientSocket = new DatagramSocket();
  InetAddress IPAddress = InetAddress.getByName("localhost");
  byte[] sendData = new byte[1024];
  byte[] receiveData = new byte[1024];
  String sentence = inFromUser.readLine();


  sendData = sentence.getBytes();
  DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 4000);
  clientSocket.send(sendPacket);

  //Getting data from the Bridge
  DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
  clientSocket.receive(receivePacket);
  String modifiedSentence = new String(receivePacket.getData());
  System.out.println("C: FROM SERVER:" + modifiedSentence);
  clientSocket.close();
}
}

服务器

    import java.io.*;
import java.net.*;

class UDPServer
{
   public static void main(String args[]) throws Exception
      {
         DatagramSocket serverSocket = new DatagramSocket(5000);
            byte[] receiveData = new byte[1024];
            byte[] sendData = new byte[1024];

            while(true)
               {
                   //receiveing data from the bridge
                  DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
                  serverSocket.receive(receivePacket);
                  String sentence = new String( receivePacket.getData());
                  System.out.println("S:RECEIVED: " + sentence);

                  InetAddress IPAddress = InetAddress.getByName("localhost");


                  // Sending data to the bridge
                  int port = 4000;
                  String capitalizedSentence = sentence.toUpperCase();
                  sendData = capitalizedSentence.getBytes();
                  DatagramPacket sendPacket =
                  new DatagramPacket(sendData, sendData.length, IPAddress, port);
                  serverSocket.send(sendPacket);
               }
      }
   }

 import java.io.*;
import java.net.*;

/**
 * Write a description of class Bridge here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class Bridge
{
   public static void main(String args[]) throws Exception{

       DatagramSocket bridgeSocket1 = new DatagramSocket(4000);
       DatagramSocket bridgeSocket2 = new DatagramSocket();

       byte[] receiveData = new byte[1024];
       byte[] sendData = new byte[1024];

       DatagramPacket  receivePacket;
       DatagramPacket  sendPacket;
       InetAddress  IPAddress = InetAddress.getByName("localhost");


       while(true){

           //Receiveing data from the UDPClient
           receivePacket = new DatagramPacket(receiveData, receiveData.length);
           bridgeSocket1.receive(receivePacket);  


           //Sending data to UDPServer
           String sentence = new String(receivePacket.getData());
           System.out.println("B: Data Received:" + sentence); 
           int port = 5000;
           sendData = sentence.getBytes();
           sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port);
           bridgeSocket2.send(sendPacket);


           // Receiving Data from the UDPServer
           receivePacket = new DatagramPacket(receiveData,receiveData.length);
           bridgeSocket1.receive(receivePacket);


           String capitalizedSentence = new String(receivePacket.getData());
           System.out.println("Capitalized Sentence in the Bridge Class: " + capitalizedSentence);


           //Sending data to the UDPClient

           sendData = capitalizedSentence.getBytes();
           sendPacket = new DatagramPacket(sendData,sendData.length,IPAddress,5000);
           bridgeSocket2.send(sendPacket);
        }
        }
    }

0 个答案:

没有答案