//Server.javapackage chat;
import java.io.*;
import java.net.*;
import java.util.*;
import java.sql.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Server extends JFrame {
JTextArea jta = new JTextArea();
JScrollPane sp = new JScrollPane(jta);
//Hashtable ht = new Hashtable(); private ServerSocket serverSocket = null;
public static int port = 1234;
private boolean listening = true;
Vector clientSockets = new Vector(10); public Server() throws IOException { Container con = this.getContentPane();
con.setLayout(new BorderLayout());
con.add(sp,BorderLayout.CENTER);
this.setSize(300,300);
this.setVisible(true);
try {
serverSocket = new ServerSocket(port);
}
catch (Exception ex) {
System.err.println("不能监听端口:" + port);
ex.printStackTrace(System.err);
System.exit(-1);
} System.out.println("成功监听端口:" + port);
jta.append("正在1234端口监听....."); while (listening)
addClient(serverSocket.accept()); serverSocket.close();
} public void addClient(Socket socket) throws IOException {
new ServerThread(socket, this,jta).start();
clientSockets.add(socket);
send("欢迎 " + socket.getInetAddress().getHostName() + " 来到这里!");
System.out.println("在线" + clientSockets.size() + " 人");
} public void removeClient(Socket socket) throws IOException {
send("用户 " + socket.getInetAddress().getHostName() + "离开...");
clientSockets.remove(socket);
System.out.println("在线 " + clientSockets.size() + " 人");
} public void send(String msg) throws IOException {
Socket socket = null;
for (int I = 0; I < clientSockets.size(); I++) {
socket = (Socket)(clientSockets.get(I));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println(msg);
}
} public static void main(String[] args) throws IOException {
new Server();
}
}
///ServerThread.javapackage chat;
import java.io.*;
import java.net.*;
import javax.swing.*;public class ServerThread extends Thread {
private Server server = null;
private Socket socket = null;
private JTextArea jta = null; private String userid; public ServerThread(Socket socket, Server server,JTextArea jta) {
super("jetic Chat Server");
this.socket = socket;
this.server = server;
this.jta = jta; userid = socket.getInetAddress().getHostName(); } public void run() {
PrintWriter out = null;
BufferedReader in = null;
String inputLine, outputLine;
try {
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(
new InputStreamReader(
socket.getInputStream())); out.println("可以开始聊天 :)"); while ((inputLine = in.readLine()) != null) {
if (inputLine.equalsIgnoreCase("quit")) break;
outputLine = jta.getText().trim();
server.send(outputLine);
}
}
catch (Exception ex) {
ex.printStackTrace(System.err);
Close();
}
finally {
Close();
}
} private void Close() {
try {
server.removeClient(socket);
socket.close();
}
catch (Exception ex) {
ex.printStackTrace(System.err);
}
}
}
import java.io.*;
import java.net.*;
import java.util.*;
import java.sql.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Server extends JFrame {
JTextArea jta = new JTextArea();
JScrollPane sp = new JScrollPane(jta);
//Hashtable ht = new Hashtable(); private ServerSocket serverSocket = null;
public static int port = 1234;
private boolean listening = true;
Vector clientSockets = new Vector(10); public Server() throws IOException { Container con = this.getContentPane();
con.setLayout(new BorderLayout());
con.add(sp,BorderLayout.CENTER);
this.setSize(300,300);
this.setVisible(true);
try {
serverSocket = new ServerSocket(port);
}
catch (Exception ex) {
System.err.println("不能监听端口:" + port);
ex.printStackTrace(System.err);
System.exit(-1);
} System.out.println("成功监听端口:" + port);
jta.append("正在1234端口监听....."); while (listening)
addClient(serverSocket.accept()); serverSocket.close();
} public void addClient(Socket socket) throws IOException {
new ServerThread(socket, this,jta).start();
clientSockets.add(socket);
send("欢迎 " + socket.getInetAddress().getHostName() + " 来到这里!");
System.out.println("在线" + clientSockets.size() + " 人");
} public void removeClient(Socket socket) throws IOException {
send("用户 " + socket.getInetAddress().getHostName() + "离开...");
clientSockets.remove(socket);
System.out.println("在线 " + clientSockets.size() + " 人");
} public void send(String msg) throws IOException {
Socket socket = null;
for (int I = 0; I < clientSockets.size(); I++) {
socket = (Socket)(clientSockets.get(I));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println(msg);
}
} public static void main(String[] args) throws IOException {
new Server();
}
}
///ServerThread.javapackage chat;
import java.io.*;
import java.net.*;
import javax.swing.*;public class ServerThread extends Thread {
private Server server = null;
private Socket socket = null;
private JTextArea jta = null; private String userid; public ServerThread(Socket socket, Server server,JTextArea jta) {
super("jetic Chat Server");
this.socket = socket;
this.server = server;
this.jta = jta; userid = socket.getInetAddress().getHostName(); } public void run() {
PrintWriter out = null;
BufferedReader in = null;
String inputLine, outputLine;
try {
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(
new InputStreamReader(
socket.getInputStream())); out.println("可以开始聊天 :)"); while ((inputLine = in.readLine()) != null) {
if (inputLine.equalsIgnoreCase("quit")) break;
outputLine = jta.getText().trim();
server.send(outputLine);
}
}
catch (Exception ex) {
ex.printStackTrace(System.err);
Close();
}
finally {
Close();
}
} private void Close() {
try {
server.removeClient(socket);
socket.close();
}
catch (Exception ex) {
ex.printStackTrace(System.err);
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货