java写的TCP局域网聊天系统
来源:互联网 发布:c语言windows窗口程序 编辑:程序博客网 时间:2024/05/18 02:30
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.BufferedReader;
import java.io.PrintWriter;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class MyServer extends JFrame implements ActionListener, KeyListener {
/**
*
*/
private static final long serialVersionUID = 1L;
JPanel jp = null;
JTextArea jta = null;
JScrollPane jsp = null;
JTextField jtf = null;
JButton jb = null;
PrintWriter pw = null;
public static void main(String[] args) {
new MyServer();
}
public MyServer() {
//为文本域添加一个滚动条
jta = new JTextArea();
jsp = new JScrollPane(jta);
jtf = new JTextField(30);
jtf.addKeyListener(this);
jb = new JButton("发送");
jb.addActionListener(this);
jp = new JPanel();
jp.add(jtf);
jp.add(jb);
this.add(jsp, BorderLayout.CENTER);
this.add(jp, BorderLayout.SOUTH);
this.setSize(500, 400);
this.setTitle("服务端");
// 设置窗体居中
Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation((int) ((size.getWidth() - this.getWidth()) / 2),
(int) ((size.getHeight() - this.getHeight()) / 2));
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
try {
ServerSocket ss = new ServerSocket(9999);
Socket s = ss.accept();
// 读取从客户端发来的信息
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 + "\n");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == jb) {
String info = jtf.getText();
pw.println("服务器:" + info);
jta.append("服务器:" + info + "\n");
jtf.setText("");
}
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
String info = jtf.getText();
pw.println("服务器:" + info);
jta.append("服务器:" + info + "\n");
jtf.setText("");
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
}
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class MyClient extends JFrame implements ActionListener,KeyListener{
/**
*
*/
private static final long serialVersionUID = 1L;
JPanel jp=null;
JTextArea jta=null;
JScrollPane jsp=null;
JTextField jtf=null;
JButton jb=null;
PrintWriter pw=null;
public static void main(String[] args) {
new MyClient();
}
public MyClient(){
jta=new JTextArea();
jsp=new JScrollPane(jta);
jtf=new JTextField(30);
jtf.addKeyListener(this);
jb=new JButton("发送");
jb.addActionListener(this);
jp=new JPanel();
jp.add(jtf);
jp.add(jb);
this.add(jsp,BorderLayout.CENTER);
this.add(jp,BorderLayout.SOUTH);
this.setSize(500,400);
this.setTitle("客户端");
//设置窗体居中
Dimension size=Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation((int)((size.getWidth()-this.getWidth())/2),(int)((size.getHeight()-this.getHeight())/2));
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
try {
Socket s=new Socket("127.0.0.1",9999);
//读取从客户端发来的信息
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+"\n");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==jb){
String info=jtf.getText();
pw.println("客户端:"+info);
jta.append("客户端:"+info+"\n");
jtf.setText("");
}
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if(e.getKeyCode()==KeyEvent.VK_ENTER){
String info=jtf.getText();
pw.println("客户端:"+info);
jta.append("客户端:"+info+"\n");
jtf.setText("");
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
}
- java写的TCP局域网聊天系统
- [原创]java局域网聊天系统
- 基于局域网的聊天系统
- 写的一个局域网聊天程序
- 一个用Java写的简单的TCP聊天程序
- 一个用Java写的简单的TCP聊天程序
- java版局域网聊天系统(即时通讯)
- Java一步一脚印—通过简单的TCP网络编程实现局域网的聊天对话
- 基于C++的局域网聊天系统客户
- 基于局域网的聊天系统-文档
- Android:基于局域网的聊天系统
- 基于TCP的聊天系统
- 基于Java的tcp实现文本聊天系统
- java eclipse 简单的局域网聊天 webservice
- 一个java局域网聊天的程序
- JAVA实现局域网聊天
- [java]局域网简易聊天
- [java]局域网简易聊天
- 项目管理:沟通与沟通计划
- Linked List Cycle
- Spark定制班第21课:Spark Streaming中动态Batch Size深入及RateController解析
- 一些基础的控件
- Java-文本下载
- java写的TCP局域网聊天系统
- hibernate基于泛型基础增删改查方法封装
- 基因数据处理70之Picard安装没成功
- 二、工厂模式
- Linux 空闲空间的格式化与加载
- 1045
- USACO Section 2.3
- CentOS7安装jdk
- MySql中UTF8 和 GBK 编码中文字符长度问题