调试JAVA聊天程序.无法通信.请高手.在线急等

调试JAVA聊天程序.无法通信.请高手.在线急等,第1张

分类: 电脑/网络 >> 程序设计 >> 其他编程语言

问题描述:

ServerChatjava

import javaDatagramPacket;

import javaDatagramSocket;

import javaSocketException;

public class ServerChat {

public static void main(String[] args) {

ServerChat serverchat=new ServerChat();

serverchatListen();

}

public void Listen()

{

while(true)

{

try

{

DatagramSocket ds=new DatagramSocket(3401);

byte buf[]=new byte[1024];

DatagramPacket dp=new DatagramPacket(buf,1024);

dsreceive(dp);

String str=new String(buf,0,dpgetLength());

Systemoutprintln(str);

dsclose();

}

catch(Exception e)

{

eprintStackTrace();

}

}

}

}

NetChatjava 客户端

import javaawteventActionEvent;

import javaawteventActionListener;

import javaawteventWindowEvent;

import javaDatagramPacket;

import javaDatagramSocket;

import javaIAddress;

import javaxswingJButton;

import javaxswingJFrame;

import javaxswingJLabel;

import javaxswingJPanel;

import javaxswingJTable;

import javaxswingJTextArea;

public class NetChat extends JFrame {

DatagramSocket ds;

JTextArea textArea = new JTextArea();

public static void main(String args[])

{

NetChat frame = new NetChat();

framesetVisible(true);

framesetResizable(false);

}

public void windowClosing(WindowEvent e)

{

dsclose();

Systemexit(0);

}

public NetChat() {

super();

try

{

ds=new DatagramSocket(3401);

}

catch(Exception ex)

{

exprintStackTrace();

}

setTitle("QQ聊天室");

getContentPane()setLayout(null);

setBounds(100, 100, 669, 518);

final JPanel panel = new JPanel();

panelsetLayout(null);

panelsetBounds(0, 0, 661, 26);

getContentPane()add(panel);

textAreasetBounds(175, 366, 420, 118);

getContentPane()add(textArea);

final JTextArea textArea_2 = new JTextArea();

textArea_2setBounds(208, 341, 87, 21);

getContentPane()add(textArea_2);

final JButton button_10 = new JButton();

button_10setText("发送");

button_10setBounds(595, 453, 64, 31);

getContentPane()add(button_10);

button_10addActionListener(new ActionListener(){

public void actionPerformed(final ActionEvent e) {

Systemoutprintln("ddddddddddd");

byte[] buf;

buf = textAreagetText()getBytes();

try {

Systemoutprintln(textAreagetText());

DatagramPacket dp=new DatagramPacket(buf,buflength,IAddressgetByName("19216801"),3401);

dssend(dp);

Systemoutprintln(textArea_2getText());

} catch (Exception e1) {

e1printStackTrace();

}

((JTextArea)egetSource())setText("");

}

});

}

}

解析:

在你的发送端程序(NetChatjava)的中有一个错误!

确切的说是在构造函数中

public NetChat()

{

super();

try

{

ds=new DatagramSocket(); <<<<<<<<<<修改此处即可

}

catch(Exception ex)

{

exprintStackTrace();

}

另外在NetChatjava文件中

根据你对Button_10添加的监听器的最后一句代码,我判断你希望文本在发送完毕后可以清空但是代码错误,它导致了一个异常抛出

应该改正为:

public NetChat()

{

button_10addActionListener(new ActionListener()

{

public void actionPerformed(final ActionEvent e)

{

Systemoutprintln("ddddddddddd");

catch (Exception e1)

{

e1printStackTrace();

Systemoutprintln("this");

}

((JTextArea)egetSource())setText(""); <<<该句子错误

textAreasetText("");<<<修改为此句即可

}

另外你的接受方程序(ServerChatjava)无法正常结束,它导致了3401端口无法正常结束可能成为网络攻击的目标

学习java可以做什么java有哪些用途首先我们先来了解什么是javaJava是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是Java程序语言和Java平台的总称。Java自面世后就非常流行,发展迅速。

Java平台JavaSE、JavaEE、JavaME。对于不同的平台,可以用Java语言编程不同的程序,开发适合不同平台的应用软件。

JavaSE允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java应用程序。java课程介绍JavaSE包含了支持JavaWeb服务开发的类,并为JavaEE提供基础。

JavaEE帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java应用程序。JavaEE是在JavaSE的基础上构建的,它提供Web服务、组件模型、管理和通信API,可以用来实现企业级的面向服务体系结构和Web20应用程序。

JavaME为在移动设备和嵌入式设备,比如手机、PDA、电视机顶盒和打印机上运行的应用程序提供一个健壮且灵活的环境。JavaME包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。并且,基于JavaME规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。

Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

JAVA应用涉及非常广泛,有涉及到以下几种领域:

桌面级应用:尤其是需要跨平台的桌面级应用程序。简单的说就是主要功能都在本机上运行的程序,比如word、excel等运行在本机上的应用就属于桌面应用。

企业级应用:简单的说就是大规模的应用,一般使用人数较多,数据量较大,对系统的稳定性、安全性、可扩展性和可装配性等都有比较高的要求。目前企业级应用是Java应用最广泛的一个领域,几乎一枝独秀。包括各种行业应用、企业信息化、电子政务等,包括办公自动化OA,人力资源HR,客户关系管理CRM,企业资源计划ERP、供应链管理SCM、企业设备管理系统EAM。

嵌入式设备及消费类电子设备:包括无线手持设备、智能卡、通信终端、医疗设备、信息家电(如数字机顶盒、电冰箱)、汽车导航系统等都是近年以来热门的Java应用领域,尤其是手机上的Java应用程序和Java游戏,更是普及。

传统的进程间通信的方式有大致如下几种:

(1) 管道(PIPE)

(2) 命名管道(FIFO)

(3) 信号量(Semphore)

(4) 消息队列(MessageQueue)

(5) 共享内存(SharedMemory)

(6) Socket

Java如何支持进程间通信。我们把Java进程理解为JVM进程。很明显,传统的这些大部分技术是无法被我们的应用程序利用了(这些进程间通信都是靠系统调用来实现的)。但是Java也有很多方法可以进行进程间通信的。

除了上面提到的Socket之外,当然首选的IPC可以使用Rmi,或者Corba也可以。另外Java nio的MappedByteBuffer也可以通过内存映射文件来实现进程间通信(共享内存)。

以上就是关于调试JAVA聊天程序.无法通信.请高手.在线急等全部的内容,包括:调试JAVA聊天程序.无法通信.请高手.在线急等、学习java可以做什么、Java开发技术都主要应用在哪些方面(java开发技术有哪些)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9727205.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存