如何接收数据报数据包



这是客户端帧。其中是"你好服务器"一行。我想让"hello server"显示在服务器框架中。到目前为止,我拥有的代码是我设法从教科书中记住的代码。其余的我不记得了。

package datagrams;
import java.io.*;
import java.net.*;
public class Client extends javax.swing.JFrame implements Runnable {

    public Client() {
        initComponents();
    }

    @Override
    public void run(){
        DatagramSocket socket = null;
        DatagramPacket recvPacket, sendPacket;
        this.setVisible(true);
        try {
            socket = new DatagramSocket();
            InetAddress  hostAddress = InetAddress.getByName("localhost");
            String userString = "hello server";
            byte sendbuf[] = userString.getBytes();
            sendPacket = new DatagramPacket(sendbuf, sendbuf.length, hostAddress, 1167);
            socket.send(sendPacket);
            recvPacket = new DatagramPacket(new byte[512], 512);
            socket.receive(recvPacket);

        catch(Exception ioe){

        }
        socket.close();
            }

和服务器框架

package datagrams;
import java.io.*;
import java.net.*;
public class Server extends javax.swing.JFrame implements Runnable {
    static int  PORT = 7070;
    public Server() {
        initComponents();
    }
    @Override public void run(){
        DatagramSocket socket = null;
        DatagramPacket recvPacket, sendPacket;
        this.setVisible(true);
        try{
            socket = new DatagramSocket(PORT);
            while (socket != null){
                recvPacket = new DatagramPacket(new byte[512], 512);
                socket.receive(recvPacket);
                sendPacket = new DatagramPacket(recvPacket.getData(), recvPacket.getLength(), recvPacket.getAddress(), recvPacket.getPort());
                socket.send(sendPacket);
            }
        }
    catch(IOException e){
        System.out.println(e.toString());
    }
    socket.close();
    }

在客户端程序中,您已使用端口 1167...但是在服务器中,您尝试从端口 7070 接收....因此,使两个端口相同(例如 7070)以接收消息....

最新更新