java 点对点_【Java SE】简单的点对点聊天程序

package CnS;

import java.io.*;

import java.net.ServerSocket;

import java.net.Socket;

import java.net.SocketException;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class Simple_Server{

//这里都是一些相关的组件

private JFrame ServerViewer=new JFrame("服务器端");

private JTextArea Contents=new JTextArea(10,25);

private JTextField Say=new JTextField(18);

private JButton Sent=new JButton("发送");

private JPanel panel1=new JPanel();

private JPanel panel2=new JPanel();

private JScrollPane jsp=new JScrollPane(Contents);

private ServerSocket ss;

private Socket s;

private DataOutputStream dos;

private DataInputStream dis;

public static void main(String arsg[]){

Simple_Server ss=new Simple_Server();

ss.creatUI();

ss.connect();

ss.creatThread();

}

//创建可视化窗口

public void creatUI(){

//面板的排版问题

FlowLayout fl1=new FlowLayout();

fl1.setAlignment(FlowLayout.LEFT);

panel1.setLayout(fl1);

panel2.setLayout(fl1);

//往面板中添加组件

Contents.setEditable(false);

panel1.add(jsp);

panel2.add(Say);

panel2.add(Sent);

MyServerListener l=new MyServerListener(this);

Sent.addActionListener(l);

Say.addActionListener(l);

//往界面中添加面板

ServerViewer.add(panel1,"North");

ServerViewer.add(panel2,"South");

//设置程序的图标

Image

image=Toolkit.getDefaultToolkit().getImage("E:\\photo\\灰-Vista.jpg");

ServerViewer.setIconImage(image);

ServerViewer.setBounds(200,200,295,265);

ServerViewer.setVisible(true);

}

//连接

public void connect(){

try{

ss=new ServerSocket(8888);

s=ss.accept();

dos=new DataOutputStream(s.getOutputStream());

dis=new DataInputStream(s.getInputStream());

}catch(IOException e){

e.printStackTrace();

}

}

//关闭,好像没有用上

public void close(){

try{

dis.close();

dos.close();

s.close();

ss.close();

}catch(IOException e){

e.printStackTrace();

}

}

public void creatThread(){

MyServerReader reader=new MyServerReader(this);

reader.start();

}

public DataInputStream getDataInputStream(){

return dis;

}

public DataOutputStream getDataOutputStream(){

return dos;

}

public JTextArea getJTextArea(){

return Contents;

}

public JTextField getJTextField(){

return Say;

}

}

class MyServerListener implements ActionListener{

private Simple_Server server;

public MyServerListener(Simple_Server server){

this.server=server;

}

public void actionPerformed(ActionEvent e) {

JTextField jtf=server.getJTextField();

String info=jtf.getText();

if(info.equals("")){

JOptionPane.showMessageDialog(null,

"发送内容不能为空",

"提示",JOptionPane.INFORMATION_MESSAGE, null);

}else{

server.getJTextArea().append("我说:"+info+"\n");

try {

server.getDataOutputStream().writeUTF(info);

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

}

jtf.setText("");

jtf.requestFocus();//这句好经典呀

}

}

class MyServerReader extends Thread{

private Simple_Server server;

public  MyServerReader(Simple_Server

server){

this.server=server;

}

public void run(){

String info;

DataInputStream dis=server.getDataInputStream();

JTextArea jta=server.getJTextArea();

try{

while(true){

info=dis.readUTF();

jta.append("好友说:"+info+"\n");

}

}catch(IOException e){

e.printStackTrace();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值