Java Socket网络编程--模仿写一个本机QQ聊天程序
public class Client3 extends JFrame {static JTextArea area;JTextField field;JButton button;static PrintWriter writer;public Client3() {this.setTitle("客户端");this.setSize(400, 500);area= new JTextArea(25,30);field = new JTextField(20);button=new JButton("提交");JScrollPane sp =new JScrollPane(area);JPanel panel=new JPanel();this.add(sp,BorderLayout.CENTER);panel.add(field);panel.add(button);this.add(panel, BorderLayout.SOUTH);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);button.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {String text = field.getText();writer.println(text);area.append("我:"+text+"\n");field.setText("");}});}public static void main(String[] args) throws Exception{Client3 c =new Client3();Socket socket =new Socket("127.0.0.1",9995);OutputStream out = socket.getOutputStream();BufferedReader reader=new BufferedReader(new InputStreamReader(socket.getInputStream()));writer=new PrintWriter(out,true);System.out.println("成功连接服务器!");while(true){String line = reader.readLine();area.append("服务器:"+line+"\n");}}
}
public class Server3 extends JFrame {static JTextArea area; JTextField field; JButton button; static PrintStream writer; public Server3(){ this.setTitle("服务器"); this.setSize(400,500); area = new JTextArea(25,30); area.setEditable(false); field = new JTextField(20); button = new JButton("提交"); JPanel panel = new JPanel(); JScrollPane sp = new JScrollPane(area); this.add(sp,BorderLayout.CENTER); panel.add(field); panel.add(button); this.add(panel,BorderLayout.SOUTH); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); button.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {String text =field.getText();writer.println(text);area.append("我:"+text+"\n");field.setText("");}});}
/*=================================================================================*/public static void main(String[] args) throws Exception{Server3 s = new Server3();ServerSocket server =new ServerSocket(9995);System.out.println("服务端准备完毕!开始监听请求!");Socket socket = server.accept();InetAddress address =socket.getInetAddress();String name = address.getLocalHost().getHostName();System.out.println(name+"已成功连接");BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));writer=new PrintStream(socket.getOutputStream(),true);while(true){String line=null;line=reader.readLine();if (line!=null) {area.append("客户端:"+line+"\n");}}}
}
Java Socket网络编程--模仿写一个本机QQ聊天程序相关推荐
- Linux网络编程:用C语言实现的聊天程序(同步通信)
通过TCP协议,用C语言实现的同步聊天程序,注释写的比较详细,个人觉得对字符串处理比较充分,能够正常编译运行,拿出来和大家分享一下! 1.客户端源代码: [cpp] view plaincopypri ...
- 网络编程(三)---- MFC 仿QQ聊天软件
今天来八一八,MFC的SOCKET 编程,利用CSocket实现一个基于TCP实现一个QQ聊天程序.你会发现,MFC要比WIN32 简单的多.但是如果你不理解具体API socket基础知识,你可能会 ...
- 循序渐进Java Socket网络编程(多客户端、信息共享、文件传输)
目录[-] 一.TCP/IP协议 二.TCP与UDP 三.Socket是什么 四.Java中的Socket 五.基本的Client/Server程序 六.多客户端连接服务器 七.信息共享 八.文件传输 ...
- Java Socket网络编程
一.Socket概述 Java网络编程主要涉及的内容是Socket编程. Socket(套接字),是网络上两个程序之间实现数据交换的一端,它既可以发送请求,也可以接受请求,一个Socket由一 ...
- UNIX网络编程笔记(2):一个简单的时间获取程序
这一讲通过一个简单的时间获取程序简单介绍套接字编程. 1.套接字API 1.1.套接字地址结构 上一讲中介绍了TCP的一些内容,知道了一个套接字对唯一标识了网络中的一个TCP连接,而一个套接字标识了一 ...
- java socket客户端设计,基于JavaSocket多客户端并发通信聊天程序的设计与实现
软件设计开发本栏目责任编辑:谢媛媛 基于JavaSocket多客户端并发通信聊天程序的设计与实现 莫足琴,欧阳艳阶,马康 (十堰职业技术学院计算机工程系,湖北十堰442000) 摘要:随着网络技术与计 ...
- Java Socket网络编程常见异常(转)
1.java.net.SocketTimeoutException 这个异常比较常见,socket超时.一般有2个地方会抛出这个,一个是connect的时候,这个超时参数由connect(Socket ...
- 【Python 基础】网络编程 - Python写一个简单的HTTP服务端和客户端,实现Client/Server交互
1.HTTP 首先讲一下http和https,详细可以去看runoob http-vs-https 基本概念 HTTP(HyperText Transfer Protocol:超文本传输协议)是一种用 ...
- Socket网络编程学习笔记 (10)简易聊天室案例
1. 聊天室数据传输设计 必要条件:客户端.服务器 必要约束:数据传输协议 原理:服务器监听消息来源.客户端链接服务器并发送消息到服务器 1.1 客户端.服务器数据交互 client 发送消息到服务器 ...
最新文章
- 如何低价坐飞机头等舱
- PLS-00172: string literal too long
- 利用学习率衰减找到最优结果(基于Iris数据集)
- Linux《命令行大全》——前言
- CVPR 2020丨MAML-Tracker: 用目标检测思路做目标跟踪? 小样本即可得高准确率
- Android应用开发(1)---Android五大UI布局的特有属性
- Zookeeper Python
- Mongodb源码分析--Mongos之分布式锁
- 并发(concurrent)、并行(parallel)、顺序(sequential)、串行(serial)是什么 区别
- systrace介绍
- 达索SOLIDWORKS PDM让你的团队协作更紧密
- 十分钟搭建私有化人脸识别服务
- 关于支付宝沙箱支付时提示系统有点儿忙,一会再试试解决方案
- deepin标题栏边框美化
- 饥荒机器人升级上限多少_饥荒机器人满级属性是多少?血量有多高
- GPS内置有源天线和无源天线的区别?
- 【温暖】文龙回AICODER给老马送锦旗了
- color属性 python_Python curses.COLOR_BLUE属性代码示例
- 01-Spring Boot 2.0 迁移指南
- 清华大学计算机基础实验部,2019计算机考研清华大学计算机基础教学部简介
热门文章
- 网站集成支付宝与网站集成财付通的比较
- idea shell 中的函数 跳转_关于初次写微信小程序的注意事项(以简单的日历手账为实例) - 幻术是中二
- “2018中国数据创新琅琊榜”江湖召集令!
- bugly平台如何查看DeviceId
- 名词计算机英语,计算机英语名词:base address
- Android实现简单的加法器,加法器的实现
- 阿里云大陆免备案的两种方法实践
- 【Arduino开源项目】LCR(电感/电容/电阻)电桥测试仪
- 修改 Virtual PC 2007 的显存大小
- 【汇正财经】9.15日盘面回顾和行情解析