为 啥 我 的 UDPk客 户 端 无 法 收 数 据 包 呢 ?
我 做 了 一 个 基 于 UDP的 客 户 端 和 服 务 器 端 。大 致 过 程 如 下 : (1)客 户 端 发 一 个 数 据 到 服 务 器 端 , (2)然 后 服 务 器 在 回 发 给 客 户 端 ; (3)客 户 端 收 到 服 务 器 的 回 馈 口 再 显 示 出 来 。
现 在 (1),(2)都 没 有 问 题 了 , 就 是 (3)还 不 行 , 我 发 现 在 客 户 端 监 听 部 分 的 永 真 循 环 while(true) 好 像 就 循 环 了 一 次 , 后 面 就 不 动 。 。 。 我 的 大 概 思 路 是 : 在 main()中 实 例 化 一 个 单 独 的 线 程 来 处 理 (3)客 户 端 收 回 馈 部 分 (请 见 程 序 )
想 了 半 天 都 不 知 为 什 么 , 会 不 会 是 这 个 异 常 处 理 中 断 了 永 真 循 环 ? 还 请 大 家 帮 忙 看 看 。
谢 谢 。 。 。 。
/*线 程 处 理 部 分 */
public class MyThreadReceive extends Thread
{
public MyThreadReceive(){}
public void run()
{
try
{
DatagramSocket clientSocket = new DatagramSocket();
byte[] receiveData = new byte[1024];
while (true)//////////////////// 此 处 保 持 监 听
{
DatagramPacket receivePacket = new DatagramPacket(receiveData,
receiveData.length);
clientSocket.receive(receivePacket);
String modifiedSentence = new String(receivePacket.getData());
System.out.println("FROM SEVER:"+modifiedSentence);
clientSocket.close();
}
}
catch (IOException e){}
}
}
/*主 函 数 部 分 */
public class Client extends JFrame
implements ActionListener
{
//其 余 略 ................
public static void main(String[] args) throws Exception
{
Client app = new Client();
app.addWindowListener(new MyWindowListener());
//创 建 并 启 动 一 个 监 听 线 程 , 监 听 服 务 器 发 回 的 数 据 包
MyThreadReceive ReceiveNow = new MyThreadReceive();
ReceiveNow.start();
}
}