Advertisement

聊天室提供Java传送文件功能。

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
Dimension ss = Toolkit.getDefaultToolkit().getScreenSize(); public ChatClient(){ super(登录聊天室); pnlLogin = new JPanel(); this.getContentPane().add(pnlLogin); lblServer = new JLabel(服务器:); lblPort = new JLabel(端口:); lblName = new JLabel(用户名:); lblPassword = new JLabel(口 令:); tfServer = new JTextField(15); tfServer.setText(127.0.0.1); tfPort = new JTextField(6); tfPort.setText(8000); tfName = new JTextField(20); pwd = new JPasswordField(20); btnLogin = new JButton(登录); btnRegister = new JButton(注册); btnExit=new JButton(退出); pnlLogin.setLayout(null); pnlLogin.setBackground(new Color(205,112,159)); lblServer.setBounds(40,35,50,30); tfServer.setBounds(90,35,102,25); lblPort.setBounds(195,35,35,30); tfPort.setBounds(230,35,55,25); lblName.setBounds(40,70,50,30); tfName.setBounds(90,70,195,25); lblPassword.setBounds(40,100,50,30); pwd.setBounds(90,100,195,25); btnLogin.setBounds(30,160,70,25); btnRegister.setBounds(130,160,70,25); btnExit.setBounds(230,160,70,25); pnlLogin.add(lblServer); pnlLogin.add(tfServer); pnlLogin.add(lblPort); pnlLogin.add(tfPort); pnlLogin.add(lblName); pnlLogin.add(tfName); pnlLogin.add(lblPassword); pnlLogin.add(pwd); pnlLogin.add(btnLogin); pnlLogin.add(btnRegister); pnlLogin.add(btnExit); //设置登录窗口 setResizable(false); setSize(320,260); setVisible(true); setLocation((ss.width-getWidth())/2,(ss.height-getHeight())/2); //为按钮注册监听 btnLogin.addActionListener(this); btnRegister.addActionListener(this); btnExit.addActionListener(this); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); } //按钮监听响应 public void actionPerformed(ActionEvent ae){ Object source = ae.getSource(); if (source.equals(btnLogin)){ if (tfName.getText().equals() || pwd.getPassword().equals()) JOptionPane.showMessageDialog(null, 用户名或密码不能为空); else strServerIp = tfServer.getText(); login(); } if (source.equals(btnRegister)){ strServerIp = tfServer.getText(); this.dispose(); new Register(strServerIp,8000); } if (source == btnExit) { System.exit(0); } } public void login() { User data = new User(); data.name = tfName.getText(); data.password = new String(pwd.getPassword()); try { String str = InetAddress.getLocalHost().toString(); data.ip = + str.substring(str.lastIndexOf(/), str.length()); } catch (UnknownHostException ex) { Logger.getLogger(ChatClient.class.getName()).log(Level.SEVERE, null, ex); } try{ Socket sock = new Socket(strServerIp,8000); ObjectOutputStream os = new ObjectOutputStream(sock.getOutputStream()); os.writeObject((User) data); //读来自服务器socket的登录状态 BufferedReader br = new BufferedReader(new InputStreamReader(sock.getInputStream())); String status = br.readLine(); if (status.equals(登陆成功)){ new ChatRoom((String)data.name,strServerIp); this.dispose(); //关闭流对象 os.close(); br.close(); sock.close(); } else{ JOptionPane.showMessageDialog(null, status); os.close(); br.close(); sock.close(); } } catch (ConnectException e1){ JOptionPane.showMessageDialog(null, 连接到制定服务器失败!); } catch (InvalidClassException e2) { JOptionPane.showMessageDialog(null, 类错误!); } catch (NotSerializableException e3) { JOptionPane.showMessageDialog(null, 对象未序列化!); } catch (IOException e4) { JOptionPane.showMessageDialog(null, 不能写入到指定服务器!); } } public static void main(String arg[]){ new ChatClient(); }}

全部评论 (0)

还没有任何评论哟~
客服
客服
  • Java可实现
    优质
    这是一款基于Java开发的多功能在线聊天室软件,除了提供即时文字交流外,还特别集成了文件传输功能,极大地方便了用户之间的资料共享与互动。 以下是经过处理后的代码文本: ```java Dimension ss = Toolkit.getDefaultToolkit().getScreenSize(); public ChatClient() { super(登录聊天室); pnlLogin = new JPanel(); this.getContentPane().add(pnlLogin); lblServer = new JLabel(服务器:); lblPort = new JLabel(端口:); lblName = new JLabel(用户名:); lblPassword = new JLabel(口令:); tfServer = new JTextField(15); tfServer.setText(127.0.0.1); tfPort = new JTextField(6); tfPort.setText(8000); tfName = new JTextField(20); pwd = new JPasswordField(20); btnLogin = new JButton(登录); btnRegister = new JButton(注册); btnExit=new JButton(退出); pnlLogin.setLayout(null); pnlLogin.setBackground(new Color(205,112,159)); lblServer.setBounds(40,35,50,30); tfServer.setBounds(90,35,102,25); lblPort.setBounds(195,35,35,30); tfPort.setBounds(230,35,55,25); lblName.setBounds(40,70,50,30); tfName.setBounds(90,70,195,25); lblPassword.setBounds(40,100,50,30); pwd.setBounds(90,100,195,25); btnLogin.setBounds(30,160,70,25); btnRegister.setBounds(130,160,70,25); btnExit.setBounds(230,160,70,25); pnlLogin.add(lblServer); pnlLogin.add(tfServer); pnlLogin.add(lblPort); pnlLogin.add(tfPort); pnlLogin.add(lblName); pnlLogin.add(tfName); pnlLogin.add(lblPassword); pnlLogin.add(pwd); pnlLogin.add(btnLogin); pnlLogin.add(btnRegister); pnlLogin.add.btnExit; setResizable(false); setSize(320,260); setVisible(true); setLocation((ss.width-getWidth())/2,(ss.height-getHeight())/2); btnLogin.addActionListener(this); btnRegister.addActionListener(this); btnExit.addActionListener(this); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); } public void actionPerformed(ActionEvent ae) { Object source = ae.getSource(); if (source.equals(btnLogin)){ if(tfName.getText().equals() || pwd.getPassword().equals()) JOptionPane.showMessageDialog(null, 用户名或密码不能为空); else{ strServerIp=tfServer.getText(); login(); } } if(source.equals(btnRegister)){ strServerIp = tfServer.getText(); this.dispose(); new Register(strServerIp,8000); } if (source == btnExit) { System.exit(0); } } public void login() { User data = new User(); data.name=tfName.getText(); data.password= new String(pwd.getPassword()); try{ String str = InetAddress.getLocalHost().toString(); data.ip= +str.substring(str.lastIndexOf(/), str.length()); }catch (UnknownHostException ex) { Logger.getLogger(ChatClient.class.getName()).log(Level.SEVERE, null, ex); } try{ Socket sock= new Socket(strServerIp ,8000); ObjectOutputStream os =new ObjectOutputStream(sock.getOutputStream()); os.writeObject((User)data); BufferedReader br=new BufferedReader(new InputStreamReader(sock.getInputStream())); String status =br.readLine(); if(status.equals(登陆成功)){ new ChatRoom((String) data.name, strServerIp); this.dispose(); //关闭流对象 os.close(); br.close(); sock.close(); } else{ JOptionPane.showMessageDialog(null,status); os.close(); br.close(); sock.close(); } } catch (ConnectException e1){ JOptionPane.showMessageDialog(null, 连接到指定服务器失败!); } catch(InvalidClassException e2) { JOptionPane.showMessageDialog(null,类错误!); } catch(NotSerializableException e3){ JOptionPane.showMessageDialog(null, 对象未序列化!); } catch(IOException e4){
  • Java局域网
    优质
    本项目是一款基于Java开发的局域网内即时通讯工具,集成了实时聊天和文件传输功能,方便用户在无互联网环境下进行沟通交流。 使用UDP和TCP开发的Java局域网聊天室具备以下功能:1、实现群聊和私聊;2、支持发送单一文件或整个文件夹;3、在传输文件的同时可以进行消息聊天,不会出现假死状态。
  • 具备
    优质
    这款聊天室软件不仅支持即时通讯,还提供便捷的文件传输服务,让用户轻松分享图片、文档和视频等各类文件。 1. 服务器端分别用线程监听文件和数据传输,客户端使用一个连接线程。 2. 客户端加入了登录框限制,默认用户名为maguiqin,密码为nuaa。 3. 发送文件时直接输入IP地址的IP,并设定发送端口为7000;而数据聊天可以设置不同的端口号进行通信。 4. 加入了Skinsharp皮肤使程序界面更加美观。 5. 收发数据采用基本的socket函数,而非CSocket和CAsySocket。发送文件则使用了CSocket功能。有待进一步完善的地方包括:一是增加进度条显示以反映文件传输的状态;二是当前版本仅支持客户端向服务端发送文件的功能,未来将优化以便允许多个客户端同时进行操作。
  • Java实现的局域网
    优质
    本项目采用Java语言开发,实现了一个具备即时消息通讯和文件互传能力的局域网聊天室应用,方便用户在内网环境下进行交流与协作。 利用Java实现的局域网聊天室支持同时进行文字聊天与文件传输。该系统不限制发送文件大小,并且可以向群聊中的任意成员发送消息或文件。此项目采用了UDP和TCP通信协议以及多线程技术,对于想了解这两种通信方式的新同学来说具有一定的参考价值。
  • 具备的网络
    优质
    这是一款集成了文件传输功能的网络聊天软件,用户不仅可以轻松发送文字消息,还能快速便捷地分享各种类型的文件。 版本1.0 用户通过下载的Java Applet小程序与服务器建立套接字连接后,在输入聊天昵称之后可以与其他用户进行交流;聊天室界面包含公共聊天区域和个人消息区,点击列表中某用户的名称即可与其开启私聊模式。 当新成员加入时,所有在线人员都会在名单上看到该名新的参与者。若有人退出或关闭浏览器,则其名字将从名单上去除,并且系统会显示此人已离开的信息。 版本2.0 添加了文件传输功能,用户可以通过点击界面中的“发送文件”按钮选择本地硬盘上的任意文档并将其分享给其他在线的聊天者。 版本2.1 对文件传送时的通知信息进行了改进,包括展示发件人的完整路径、接收方确认消息以及指定接收到的文档保存位置。同时针对可能出现的一些问题采取了相应的预防措施以确保系统运行顺畅稳定。
  • Java Java Java
    优质
    Java聊天室是一款基于Java技术开发的在线交流平台,用户可以轻松创建和加入聊天室进行实时文字、语音沟通,支持好友管理与消息推送功能。 Java聊天室是一个基于Java编程语言的实时通讯应用,它允许用户通过网络进行文本、音频或视频交流。本段落将深入探讨构建这样一个Java聊天室所需的关键技术和知识点。 1. **Java网络编程基础**:Java聊天室的核心是网络通信,这涉及到Socket编程。Socket为应用程序与网络提供接口,你需要了解TCP/IP协议栈以及如何使用ServerSocket和Socket对象建立客户端-服务器连接。 2. **多线程处理**:为了同时管理多个并发的客户端连接,必须在每个客户端连接中创建单独的线程来处理请求。这需要熟悉Thread类或Runnable接口以实现并行操作。 3. **输入输出流的应用**:在网络通信里,数据传输通过InputStream和OutputStream完成。掌握如何使用BufferedReader和PrintWriter读写文本信息是必要的技能之一。 4. **并发控制机制**:在聊天室中,消息需被正确广播至所有在线用户。因此需要了解同步技术如synchronized关键字的应用以避免竞态条件。 5. **数据序列化技术**:若要支持更复杂的数据交换(例如发送对象),则需要用到Java的序列化功能。这包括将对象转换成字节流并恢复其状态的知识。 6. **用户认证与安全措施**:为了保证用户的隐私和安全性,聊天室可能需要实现登录机制等安全保障措施,涉及密码哈希、加密技术以及HTTPS连接以确保通信的安全性。 7. **GUI设计原则**:对于图形界面的构建,Java提供了Swing或JavaFX库。掌握窗口创建、组件添加及用户事件处理(如点击按钮发送消息)是必要的。 8. **事件驱动编程模型**:在GUI开发中,理解如何使用监听器和处理器来响应用户的交互动作是非常重要的。 9. **数据库集成技巧**:为了持久存储信息比如聊天记录或用户数据,可能需要连接到数据库。Java的JDBC API可用于此目的,并且学习SQL语句以及PreparedStatement与ResultSet对象的操作是必要的。 10. **测试与调试方法**:确保应用程序稳定性和功能性的关键在于编写单元测试、使用调试工具及异常处理。 通过掌握上述技术点,你可以创建一个具备完整功能和高度稳定的在线聊天环境。在开发过程中可能会遇到各种挑战,但随着对Java及其网络编程的理解加深,这些问题都将迎刃而解。
  • Java Java
    优质
    Java聊天室是一款基于Java技术开发的实时在线交流平台,支持文字、表情及文件传输等功能,为用户提供便捷的沟通体验。 Java聊天室是网络编程的一个典型应用案例,展示了Java在构建客户端-服务器架构中的强大能力。在这个系统里,作为中心节点的服务器端接收并处理来自多个客户端的连接请求;而客户端则是用户与系统的交互界面,它们会连接到服务器发送消息,并接收其他用户的回复。 深入了解Java网络编程的基础知识时,我们发现Java提供了一系列API来支持网络通信需求,如Socket和ServerSocket类。这些是TCP/IP协议的核心组成部分。在服务器端使用ServerSocket监听特定的端口以等待客户端的请求;当有新的连接尝试时,会创建一个新的Socket实例来管理与该客户端之间的数据交换过程。对于客户端而言,则需要通过Socket建立到服务器的链接,并利用输入输出流进行信息传递。 一个典型的Java聊天室中,服务器端的工作主要包括启动无限循环监听机制以持续接收新来的客户请求并处理它们的数据包;一旦接收到消息,便将其广播给所有已连接的客户端。这一过程通常涉及多线程技术的应用,因为每个客户端都需要独立的线程来确保服务不会因其他用户的操作而被阻塞。 对于客户端程序而言,则需要设计一个用户界面(如GUI),这可以通过Java的Swing或JavaFX库实现。在这个界面上,用户可以输入信息并通过点击发送按钮将消息传送到服务器;同时还需要设置另一个线程用于持续接收由服务端转发过来的信息并显示在屏幕上。 开发这样一个聊天室项目时可能会遇到以下几个关键技术点: 1. 异步通信:为了保证用户体验,在客户端需要实现一个异步事件驱动模型,如使用Java的EventQueue和EventListener机制。 2. 错误处理:网络环境下的异常情况(例如连接中断、数据传输错误)需有良好的解决方案以确保程序稳定运行。 3. 安全性考量:实际应用中可能需要加密通信来保护用户隐私,并且要防止恶意用户的攻击行为。 4. 用户身份验证机制:为了维护聊天室的安全性和秩序,可以考虑引入登录系统进行合法性的检验。 5. 性能优化策略:随着客户端数量的增长,服务器端应该能够高效地管理资源并避免性能瓶颈。这可能包括使用线程池和消息缓存等技术手段。 在项目的具体设计、实现步骤以及代码示例方面,《JAVA聊天室.doc》文档中通常会有详细的说明。通过这个项目的学习实践,开发者可以深入理解Java网络编程、多线程处理及基本的服务器端与客户端交互逻辑,并提高自身的编程技能水平。
  • Java中的图片和实现
    优质
    本项目专注于在Java开发的在线聊天室内集成高效的图片与文本传输机制,旨在提供流畅、安全且用户友好的通信体验。 由于您提供的博文链接并未直接包含文字内容或明确的文本要求我进行改写,因此无法从给定的信息中提取具体内容来完成您的请求。如果可以提供具体的段落或者更多的上下文信息,我很乐意帮您重写该部分内容,并确保去掉任何联系方式、网址等不必要的细节。 如果您有具体的文字需要处理,请直接复制粘贴过来吧!
  • 简易Java代码
    优质
    这段代码提供了一个简单的Java实现的功能性聊天室程序框架。它具备基本的消息发送与接收功能,并可在此基础上扩展更多特性,如用户管理、消息持久化等。适合初学者学习和实践网络编程的基础知识。 一个简单的Java聊天室程序,包括界面优化、配色调整以及聊天功能的实现。
  • Java(即时通讯)支持
    优质
    这是一款基于Java开发的聊天室软件,具备即时通讯功能,并且能够支持用户之间互相发送文件。 网络聊天室支持群聊私聊以及文件发送等功能,包括服务器端与客户端的开发。服务器端可以进行监视管理,适合初学者学习使用。