Java 如何接收数据报数据包
这是客户端框架。其中有一行“hello server”。我想在服务器框架中显示“hello server”。到目前为止,我所掌握的代码是我从课本中设法记住的。剩下的我记不得了Java 如何接收数据报数据包,java,datagram,Java,Datagram,这是客户端框架。其中有一行“hello server”。我想在服务器框架中显示“hello server”。到目前为止,我所掌握的代码是我从课本中设法记住的。剩下的我记不得了 package datagrams; import java.io.*; import java.net.*; public class Client extends javax.swing.JFrame implements Runnable { public Client() { init
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)以接收消息…Ok。我改了。什么也没发生?请先编写代码在控制台中生成输出。然后你可以使用高级界面。因为你不知道问题到底出在哪里。我复制了你的代码并进行了编辑,使之成为控制台驱动的。当我使两个端口相同时,它工作正常。您必须打开两个控制台,一个运行服务器,另一个运行客户端。还有一件事,先执行服务器程序,然后执行客户端程序。