关于java udp编程的小问题,好像服务器和客户端都收不到

importjava.io.IOException;importjava.net.DatagramPacket;importjava.net.DatagramSocket... import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

public class ServerUDP {

// 定义服务器接受端口和发送端口
private final int PORT = 9110;

// 定义数据报大小为4k
private final int DATE_LEN = 4096;

// 定义服务器DatagramSocket
private DatagramSocket socket = null;

// 定义用于接受和发送的DatagramPacket对象
private DatagramPacket inPacket;
private DatagramPacket outPacket;

// 定义接受字节数组和发送字节数组
byte[] inBuff = new byte[DATE_LEN];
byte[] outBuff = new byte[DATE_LEN];

// 初始化服务器
public void openServer() {
try {
socket = new DatagramSocket(PORT);
System.out.println("服务器启动成功!!!!");
} catch (Exception e) {
System.out.println("无法启动服务器");
}
}
// 服务器监听
public void serverListener() {
while (true) {
try {
socket.receive(inPacket);
inBuff = inPacket.getData();
System.out.println(new String(inBuff.toString()));

// 返回客户端一条信息
outBuff = "ok".getBytes();
outPacket = new DatagramPacket(outBuff, outBuff.length,inPacket.getSocketAddress());
socket.send(outPacket);
} catch (Exception e) {

}

}
}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ServerUDP s=new ServerUDP();
s.openServer();
s.serverListener();
}

}

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.UnknownHostException;

public class ClientUDP {

// 定义服务器的ip,即本机ip,通过百度本机ip取得
private final String ServerIP = "27.159.29.134";
// 定义服务器接受端口和发送端口
private final int PORT = 9110;
// 定义数据报大小为4k
private final int DATE_LEN = 4096;
// 定义服务器DatagramSocket
private DatagramSocket socket = null;
// 定义用于接受和发送的DatagramPacket对象
private DatagramPacket inPacket;
private DatagramPacket outPacket;
// 定义接受字节数组和发送字节数组
byte[] inBuff = new byte[DATE_LEN];
byte[] outBuff = new byte[DATE_LEN];

public void init() {

try {

socket = new DatagramSocket();

// 取得服务器的InetAddress类型地址
InetAddress a = InetAddress.getByName(ServerIP);

// 发送客户端ip给服务端

String msg="hello";
outBuff = msg.getBytes();
outPacket = new DatagramPacket(outBuff, outBuff.length, a, PORT);
socket.send(outPacket);

// 得到服务端的返回信息
socket.receive(inPacket);
inBuff = inPacket.getData();
System.out.println(inBuff.toString());
} catch (Exception e) {

}

}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ClientUDP c = new ClientUDP();
c.init();
}

}
展开
 我来答
度逍遥
2012-04-04 · 超过15用户采纳过TA的回答
知道答主
回答量:30
采纳率:0%
帮助的人:25.4万
展开全部
接收和发送的数据包,没有实例化。

inPacket=new DatagramPacket(inBuff,DATE_LEN);
outPacket=new DatagramPacket(outBuff,DATE_LEN);
并且
System.out.println(new String(inBuff.toString()));
写成
System.out.println(new String(inBuff);
程序还有很多可以优化的地方。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式