/*=============服务端================*/

/**
* 服务器程序 在9999端口监听
* 可以通过控制台输入来回应客户端
* @author xiaoluo
* @qq 3087438119
*/

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.*;
import javax.swing.*;

public class MyServer1 extends JFrame implements ActionListener{
/**
*
*/
private static final long serialVersionUID = 1L;
JTextArea jta = null;
JTextField jtf = null;
JButton jb = null;
JPanel jpl= null;
JScrollPane jsp = null;
//把信息发给客户端的对象
PrintWriter pw =null;
public static void main(String [] args){
MyServer1 ms = new MyServer1();
}
public MyServer1(){
jta = new JTextArea();
jtf = new JTextField(20);
jb= new JButton("发送");
jb.addActionListener(this);
jpl = new JPanel();
jsp = new JScrollPane(jta);
jpl.add(jtf);
//jpl.add(jta);
jpl.add(jb);
this.add(jsp,"Center");
this.add(jpl,"South");
this.setTitle("和佳客服");
this.setSize(400,300);
this.setVisible(true);
//服务器监听
try {
ServerSocket ss= new ServerSocket(9988);
//等待客户端连接
Socket s = ss.accept();
//读取客户端发来的信息
InputStreamReader isr = new InputStreamReader(s.getInputStream());
BufferedReader brd = new BufferedReader(isr);
pw = new PrintWriter(s.getOutputStream(),true);
while(true){
//读取客户端信息
String info = brd.readLine();
//把客户端信息写到信息栏
jta.append("客户端:"+info+"\r\n");
}
} catch (IOException e) {
e.printStackTrace();
}
}

@Override
public void actionPerformed(ActionEvent e) {
//如果用户按下发送信息按钮
if(e.getSource()==jb){
//把服务器在框里写内容发送给客户端
String info = jtf.getText();
jta.append("服务端:"+info+"\r\n");
pw.println(info);//发送
jtf.setText("");//清空输入框
}
}

}

/*===============客户端====================*/

/**
* 客户端
* @author xiaoluo
* @qq 3087438119
*/

import java.io.*;
import java.net.*;
import javax.swing.*;

public class MyClient1 extends JFrame implements ActionListener{

JTextArea jta = null;
JTextField jtf = null;
JButton jb = null;
JPanel jpl= null;
JScrollPane jsp = null;
//把信息发给客户端的对象
PrintWriter pw =null;


public static void main(String [] args){
MyClient1 mc = new MyClient1();
}

public MyClient1(){
jta = new JTextArea();
jtf = new JTextField(20);
jb= new JButton("发送");
jb.addActionListener(this);
jpl = new JPanel();
jsp = new JScrollPane(jta);
jpl.add(jtf);
//jpl.add(jta);
jpl.add(jb);
this.add(jsp,"Center");
this.add(jpl,"South");
this.setTitle("客户端");
this.setSize(400,300);
this.setVisible(true);

try {
Socket s = new Socket("127.0.0.1",9988);
InputStreamReader isr = new InputStreamReader(s.getInputStream());
BufferedReader br = new BufferedReader(isr);

pw = new PrintWriter(s.getOutputStream(),true);

while(true){
//不停地读取从服务器端发来的信息
String info = br.readLine();
jta.append("服务端:"+info+"\r\n");



}

} catch (UnknownHostException e) {

e.printStackTrace();
} catch (IOException e) {

e.printStackTrace();
}


}

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//如果用户按下发送信息按钮
if(e.getSource()==jb){
//把服务器在框里写内容发送给客户端
String info = jtf.getText();
jta.append("客户端:"+info+"\r\n");
pw.println(info);//发送
jtf.setText("");//清空输入框
}
}
}

最新文章

  1. git 常规使用小结
  2. python学习之路——基础篇(3)模块(续)
  3. Mysql 5.7.12解压版的安装及配置系统编码
  4. HDU 2577
  5. 再论pyquery
  6. Java File类基本操作
  7. VC++全局变量初始化
  8. Java对证书的操作
  9. DWZ前端框架使用问题记录
  10. 在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序(老罗学习笔记3)
  11. [017]string类使用注意事项
  12. 秀才每天一篇之—SEO是什么?
  13. 【前端攻略】:玩转图片Base64编码(转)
  14. C# 从零开始 vol.1
  15. C# group 子句
  16. Linux查看CPU、内存、进程使用情况(转)
  17. python3.6 连接mysql数据库问题
  18. final link failed: Nonrepresentable section on output
  19. PHP 事务写法
  20. word,excel,ppt,txt转换为 PDF

热门文章

  1. 邓白氏码的申请-iOS公司开发者账号准备
  2. 【Swift】TTTAttributedLabel使用小记
  3. 安装gem所需知道的
  4. [css]我要用css画幅画(六)
  5. [转]浅谈CSRF攻击方式
  6. 从零自学Hadoop(14):Hive介绍及安装
  7. W3School-CSS 列表实例
  8. PHP 源码学习之线程安全
  9. iptables中文介绍 、基本使用操作命令(转)
  10. 关于java中的MANIFEST.MF 文件内容