再学习完java的通信技术后,做了一个简单的窗体聊天程序。程序非常简单,主要目的是当练习巩固自己所学的东西,在这里写出来记录以下。下面直接上代码。

首先是服务端代码:

package ChatTwoPackage;import java.io.*;
import java.net.*;public class ChatTwoServer {public ChatTwoServer(int port,String name) throws IOException{ServerSocket server=new ServerSocket(port);//创建seversocket对象,提供tcp连接服务。指定端口port,等待tcp连接。System.out.print("正在等待连接,请勿操作!");Socket client=server.accept();//创建socket对象,它等待接收客户端的连接。new ChatTwoClient(name,client);//实现图形界面。server.close();}public static void main(String[] args) throws IOException {new ChatTwoServer(2001,"SQ");}}

然后是客户端的代码:

package ChatTwoPackage;import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;public class ChatTwoClient extends JFrame implements ActionListener {private String name;private JTextArea text_re;private JTextField text_se;private PrintWriter cout;private JButton buttons[];public ChatTwoClient(String name,Socket socket) throws IOException{super("我:"+name+InetAddress.getLocalHost().getHostAddress()+":"+socket.getLocalPort());this.setBounds(320, 240, 400, 240);this.text_re=new JTextArea();this.text_re.setEditable(false);this.getContentPane().add(new JScrollPane(this.text_re));JToolBar toolBar=new JToolBar();this.getContentPane().add(toolBar,"South");toolBar.add(this.text_se=new JTextField(30));buttons=new JButton[2];buttons[0]=new JButton("发送");buttons[1]=new JButton("下线");toolBar.add(buttons[0]);toolBar.add(buttons[1]);buttons[0].addActionListener(this);buttons[1].addActionListener(this);//给按钮添加事件监听,委托当前对象处理this.setVisible(true);this.name=name;this.cout=new PrintWriter(socket.getOutputStream(),true);//获得socket输出流this.cout.println(name);BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream())); //将socket的字节输入流转换为字符流,默认GBK字符集,再创建缓冲字符输入流String line="连接"+br.readLine()+"成功";while(line!=null&&!line.endsWith("bye")){text_re.append(line+"\r\n");line=br.readLine();}//读取对方发送的内容并显示,直到内容为为空或对方下线br.close();this.cout.close();socket.close();buttons[0].setEnabled(false);buttons[1].setEnabled(false);}public ChatTwoClient(String name,String host,int port) throws IOException{this(name,new Socket(host,port));//调用另一个构造方法}public void actionPerformed(ActionEvent ev){if(ev.getActionCommand().equals("发送")){this.cout.println(name+":"+text_se.getText());text_re.append("我:"+text_se.getText()+"\n");text_se.setText("");}//按下发送按钮后,将内容发出,并更新自己聊天框的内容if(ev.getActionCommand().equals("下线")){text_re.append("你已下线\n");this.cout.println(name+"离线\n"+"bye\n");buttons[0].setEnabled(false);buttons[1].setEnabled(false);}//下线按钮按下后,发送bye作为下线标记}public static void main(String[] args) throws IOException {new ChatTwoClient("mxl","127.0.0.1",2001); //ip地址和端口}}

运行效果:

说明:

1.两台计算机一台作为服务端,作为服务端的计算机需要有两个代码。首先运行服务端的代码,等待客户端机器连接,客户端运行客户端代码后,提示连接成功。就可以发送信息了。

2.运行代码前需要将ip地址改为自己计算机当前的ip地址(Modem、ISDN、ADSL、有线宽频、小区宽频等方式上网的计算机,每次上网所分配到的IP地址都不相同,这称为动态IP地址)。如果要用一台计算机充当客户端和服务端,就将ip地址写为:127.0.0.1(127.0.0.1是回送地址,指本地机,一般用来测试使用)。先运行服务端代码,再运行客户端代码即可。

java网络通信技术示例:简单的聊天小程序相关推荐

  1. Java网络编程以及简单的聊天程序

    网络编程技术是互联网技术中的主流编程技术之一,懂的一些基本的操作是非常必要的.这章主要讲解网络编程,UDP和Socket编程,以及使用Socket做一个简单的聊天软件. 全部代码下载:链接 1.网络编 ...

  2. 利用多线程与网络编程编写的实时聊天小程序

    客户端代码: package Oracle; import java.io.BufferedReader; import java.io.IOException; import java.io.Inp ...

  3. 实战|轻松用 Python 开发一个简单有趣的聊天小程序

    前言 Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol). UDP 为应用程序提供了一种无需建立连接就可以发送封装的 I ...

  4. Java网络编程学习——简单模拟在线聊天

    Java网络编程学习--简单模拟在线聊天 学了java网络,也是该做个小案例来巩固一下了. 本次案例将使用UDP和多线程模拟即时聊天,简单练练手. 1.前提知识 需要知道简单的IO流操作,以及简单的U ...

  5. Java的网络编程【TCP与UDP聊天小程序】

    Java的网络编程[TCP与UDP聊天小程序] 1. TCP协议 1.1 传输控制协议(Transmission Control Protocol),是一种**面向连接(全程保持连接)**的协议,类似 ...

  6. java udp简单聊天程序_Java基于UDP协议实现简单的聊天室程序

    最近比较闲,一直在抽空回顾一些java方面的技术应用. 今天没什么事做,基于udp协议,写了一个非常简单的聊天室程序. 现在的工作,很少用到socket,也算是对java网络编程方面的一个简单回忆. ...

  7. javaweb通过iis实现域账号免登陆_聊天小程序的Java实现

    登陆界面 注册账号 找回密码 重设密码 聊天界面 多人聊天 一. 设计任务 1.1设计意义 <Java基础入门>课程设计是对学生的一种全面综合训练,它包括问题分析,用户界面设计,程序设计基 ...

  8. java udp 聊天室_Java基于UDP协议实现简单的聊天室程序

    最近比较闲,一直在抽空回顾一些Java方面的技术应用. 今天没什么事做,基于UDP协议,写了一个非常简单的聊天室程序. 现在的工作,很少用到socket,也算是对Java网络编程方面的一个简单回忆. ...

  9. python软件代码示例-用Python写一个模拟qq聊天小程序的代码实例

    Python 超简单的聊天程序 客户端: import socket, sys host = '10.248.27.23' # host = raw_input("Plz imput des ...

  10. 项目展示--基于UDP传输协议+GUI的Java聊天小程序(图片加源代码)

    前言 前几天没什么事儿,在学习UDP和TCP传输协议,顺手做了一个基于UDP协议的聊天小程序,同时复习了Java的GUI知识. 程序运行截图展示 1.运行程序,生成第一个窗口,输入要监听的端口号:12 ...

最新文章

  1. Collections 类
  2. 一个程序员的时间管理
  3. 干货下载 | 高效金融客户分析体系如何搭建?
  4. jzoj1265-Round Numbers【数位统计】
  5. easyexcel 日期类型 convert_[Oracle 专题] SQL 日期、数字、字符串,运算、转换
  6. Delphi的TdxDBGrid自带的一些有用的导出文件的函数(EXCEL、HTML、XML、TXT、INI、Registry等)
  7. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何在初始化的时候写入参数
  8. 高等数学所有符号的写法与读法
  9. Windows XP中的通用即插即用
  10. 7z的压缩包linux下如何解压软件,7z(p7zip)压缩软件在Linux下的安装和使用
  11. 美团网官网最新底部导航页面制作及CSS样式设计
  12. Linux、Qt等安装镜像下载--清华大学开源软件镜像站
  13. 亮化工程改善城市夜景有什么重要意义
  14. 混合IP-SDN环境的仿真实验
  15. Verilog数字系统设计(夏宇闻)—课后思考题记录(上)
  16. ThinkPHP根据时间显示不同的问候语
  17. 对于计算机发展史的一些启示
  18. 网络安全——Burp Suite抓包工具的使用
  19. 怎么解决访问所有HTTPS网站显示连接不安全
  20. QQ8.9精简优化安装版

热门文章

  1. 计算机怎么开启tftp服务器,Win7系统如何开启TFTP服务器?
  2. java语言的编译器命令_Java编译器命令行功能
  3. 机器搜索引擎 vs 人肉搜索引擎(作者:胡宝介)
  4. java毕业设计便利店库存管理Mybatis+系统+数据库+调试部署
  5. 外挂技术之-检测和反检测
  6. 最强推荐:Android攒了一个月的面试题及解答,震撼来袭免费下载!
  7. DNF最新纯图色脚本框架2022-4-27
  8. 语音计算机怎么切换音乐模式,怎么实现一个设备播放一个程序的声音呢?
  9. 使用jad反编译Java文件
  10. 山东大学舆情分析系统项目结题总结