⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myclient.java

📁 java message client server thread
💻 JAVA
字号:
package com.sterning;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

public class MyClient extends WindowAdapter implements ActionListener {
	JFrame frame;

	JList list;

	JList list1;

	JTextField tf;

	DefaultListModel model;

	DefaultListModel model1;

	JButton button;

	JButton lout;

	JScrollPane scrollpane;

	JScrollPane scrollpane1;

	JLabel label;

	Socket s, s1, s2;

	DataInputStream din;

	DataOutputStream dout;

	DataOutputStream dlout;

	DataOutputStream dout1;

	DataInputStream din1;

	String name;

	MyClient(String name) throws IOException {
		frame = new JFrame("聊天客户端");
		tf = new JTextField();
		model = new DefaultListModel();
		model1 = new DefaultListModel();
		label = new JLabel("消息");
		list = new JList(model);
		list1 = new JList(model1);
		button = new JButton("发送");
		lout = new JButton("注销");
		scrollpane = new JScrollPane(list);
		scrollpane1 = new JScrollPane(list1);
		JPanel panel = new JPanel();
		button.addActionListener(this);
		lout.addActionListener(this);
		panel.add(tf);
		panel.add(button);
		panel.add(scrollpane);
		panel.add(label);
		panel.add(lout);
		panel.add(scrollpane1);
		scrollpane.setBounds(10, 20, 180, 150);
		scrollpane1.setBounds(250, 20, 100, 150);
		label.setBounds(20, 180, 80, 30);
		tf.setBounds(100, 180, 140, 30);
		button.setBounds(260, 180, 90, 30);
		lout.setBounds(260, 230, 90, 30);
		frame.add(panel);
		panel.setLayout(null);
		frame.setSize(400, 400);
		frame.setVisible(true);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.name = name;
		frame.addWindowListener(this);
		s = new Socket("localhost", 1004);
		// creates a socket object
		s1 = new Socket("localhost", 1004);
		s2 = new Socket("localhost", 1004);
		// create inputstream for a particular socket
		din = new DataInputStream(s.getInputStream());
		// create outputstream
		dout = new DataOutputStream(s.getOutputStream());
		// sending a message for login
		dout.writeUTF(name + " has Logged in");
		dlout = new DataOutputStream(s1.getOutputStream());
		dout1 = new DataOutputStream(s2.getOutputStream());
		din1 = new DataInputStream(s2.getInputStream());
		// creating a thread for maintaning the list of user name
		My1 m1 = new My1(dout1, model1, name, din1);
		Thread t1 = new Thread(m1);
		t1.start();
		// creating a thread for receiving message
		My m = new My(din, model);
		Thread t = new Thread(m);
		t.start();
	}

	public void actionPerformed(ActionEvent e) {
		// sending message
		if (e.getSource() == button) {
			String str = "";
			str = tf.getText();
			tf.setText("");
			str = name + ": > " + str;
			try {
				dout.writeUTF(str);
				System.out.println(str);
				dout.flush();
			} catch (IOException ae) {
				System.out.println(ae);
			}
		}
		// client logout
		if (e.getSource() == lout) {
			frame.dispose();
			try {
				// sending the message for logout
				dout.writeUTF(name + " has Logged out");
				dlout.writeUTF(name);
				dlout.flush();
				Thread.currentThread().sleep(1000);
				System.exit(1);
			} catch (Exception oe) {
			}
		}
	}

	public void windowClosing(WindowEvent w) {
		try {
			dlout.writeUTF(name);
			dlout.flush();
			Thread.currentThread().sleep(1000);
			System.exit(1);
		} catch (Exception oe) {
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -