java网络编程-聊天室

package com.ruide.chats;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextArea;
import javax.swing.JButton;
import javax.swing.JTextField;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.awt.event.ActionEvent;

public class Chat extends JFrame {

private JPanel contentPane;
private JTextField textField;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Chat frame = new Chat();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the frame.
 */
public Chat() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(null);

    JTextArea textArea = new JTextArea();
    textArea.setBounds(10, 10, 414, 172);
    contentPane.add(textArea);

    textField = new JTextField();
    textField.setBounds(10, 202, 291, 40);
    contentPane.add(textField);
    textField.setColumns(10);


    JButton button = new JButton("\u53D1\u9001");
    button.addActionListener(new ActionListener() {
        //发送的监听事件
        public void actionPerformed(ActionEvent e) {
            //获取本机的IP地址
            InetAddress ip=null;
            int port=8888;
            try {
                ip=InetAddress.getByName("localhost");
                //获取Socket
                Socket s=new Socket(ip, port);
                //获取网络输出流
                OutputStream out=s.getOutputStream();
                //获取文本域的信息
                String messages=textArea.getText();
                //获取需要发送的信息
                String str=textField.getText();
                //信息
                String message=messages+"\n"+str;
                //将字符串转化成字节数组
                byte by[]=message.getBytes();
                //传输信息
                out.write(by);
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
    });
    button.setBounds(331, 205, 72, 32);
    contentPane.add(button);

    new Thread() {
        public void run() {
            //服务器端
            int port=8888;
            try {
                //创建服务器套接字
                ServerSocket ss=new ServerSocket(port);
                while(true) {
                    //创建字符数组接收信息
                    byte bs[]=new byte[1024*64];
                    Socket s=ss.accept();
                    //获取输入流
                    InputStream in=s.getInputStream();
                    //读取缓冲区信息
                    in.read(bs);
   这地方还有点问题???课本while
                    //输出到控制台是中文
                    String str=new String(bs);
                    //添加客户端信息到会话展示框
                    textArea.setText(str.trim());
                }
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        }
    }.start();
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值