import java.awt.*;
import java.net.*;
import java.io.*;
public class Server extends Thread {
ServerSocket skt;
Socket Client[]=new Socket[10];;
Socket Client1=null;
int i = 0;
TextArea in;
int port,k=0,l=0;
//BufferedReader theInputStream;
PrintStream theOutputStream;
//String readin;
Face chat;
public Server(int port, Face chat) {
try {
this.port = port;
skt = new ServerSocket(port);
this.chat = chat;
} catch (IOException e) {
chat.ta.append(e.toString());
}
}
public void run() {
chat.ta.append("等待连线......");
while (true) {
//System.out.print(""+i+"\
");
try {
Client[k] = skt.accept(); /* 接收客户连接 */
//当有客户端连接时就新建一个子线程
if (i < 2) {
ServerThread server[] = new ServerThread[10];
server[k]= new ServerThread(Client[k], this.chat, i);
l=server.length;
server[k].start();
chat.ta.append("客户端" + Client[k].getInetAddress() + "已连线\
");
/*theInputStream = new BufferedReader(new InputStreamReader(Client
.getInputStream()));*/
//for(int j=0;j i = server[k].getI(); k++; } else { //theOutputStream = new PrintStream(null); } } catch (SocketException e) { //chat.ta.append("连线中断!\ "); //chat.clientBtn.setEnabled(true); //chat.serverBtn.setEnabled(true); //chat.tfaddress.setEnabled(true); //chat.tfport.setEnabled(true); //try { //skt.close(); //Client.close(); //} catch (IOException err) { // chat.ta.append(err.toString()); //} } catch (IOException e) { chat.ta.append(e.toString()); } } } public void dataout(String data) { //for(int j=0;j } } class ServerThread extends Thread { ServerSocket skt; Socket Client; TextArea in; int port; int i; BufferedReader theInputStream; PrintStream theOutputStream; String readin; Face chat; //服务端子线程 public ServerThread(Socket s, Face chat, int i) { this.i = ++i; Client = s; //this.port = port; //skt = new ServerSocket(port); this.chat = chat; } public int getI() { return this.i; } public Socket getClient() { return this.Client; } public void run() { //chat.ta.append("等待连线......"); try { //Client = skt.accept(); /* 接收客户连接 */ //chat.ta.append("客户端" + Client.getInetAddress() + "已连线\ "); theInputStream = new BufferedReader(new InputStreamReader(Client .getInputStream())); theOutputStream = new PrintStream(Client.getOutputStream()); while (true) { readin = theInputStream.readLine(); chat.ta.append(readin + "\ "); } } catch (SocketException e) { chat.ta.append("连线中断!\ "); chat.clientBtn.setEnabled(true); chat.serverBtn.setEnabled(true); chat.tfaddress.setEnabled(true); chat.tfport.setEnabled(true); try { i--; skt.close(); Client.close(); } catch (IOException err) { chat.ta.append(err.toString()); } } catch (IOException e) { chat.ta.append(e.toString()); } } public void dataout(String data) { theOutputStream.println(data); } } //Client.java import java.net.*; import java.io.*; import javax.swing.Timer; class Client extends Thread { Socket skt; InetAddress host; int port; BufferedReader theInputStream; PrintStream theOutputStream; String readin; Face chat; public Client(String ip, int p, Face chat) { try { host = InetAddress.getByName(ip); port = p; this.chat = chat; } catch (IOException e) { chat.ta.append(e.toString()); } } public void run() { try { chat.ta.append("尝试连线......"); skt = new Socket(host, port); chat.ta.append("连线成功\ "); theInputStream = new BufferedReader(new InputStreamReader(skt .getInputStream())); theOutputStream = new PrintStream(skt.getOutputStream()); //Timer myTimer = new Timer(); while (true) { readin = theInputStream.readLine(); chat.ta.append(readin + "\ "); } } catch (SocketException e) { chat.ta.append("连线中断!\ "); chat.clientBtn.setEnabled(true); chat.serverBtn.setEnabled(true); chat.tfaddress.setEnabled(true); chat.tfport.setEnabled(true); try { skt.close(); } catch (IOException err) { chat.ta.append(err.toString()); } } catch (IOException e) { chat.ta.append(e.toString()); } } public void dataout(String data) { theOutputStream.println(data); } } //软件界面,进行按键监听调用。 //face.java import java.awt.*; import java.awt.event.*; public class Face extends Frame { /** * */ private static final long serialVersionUID = 1L; Button clientBtn, serverBtn; TextArea ta; TextField tfaddress, tfport, tftype; int port; Client client; Server server; boolean iamserver; static Face frm; public Face() { clientBtn = new Button("客户端"); serverBtn = new Button("服务器"); ta = new TextArea(" .setEnabled(false); serverBtn.setEnabled(false); clientBtn.setEnabled(false); } }); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } public static void main(String args[]) { frm = new Face(); } private class TFListener implements KeyListener { public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER) { ta.append(">" + tftype.getText() + "\ "); if (iamserver) server.dataout(tftype.getText()); else client.dataout(tftype.getText()); tftype.setText(""); } } public void keyTyped(KeyEvent e) { } public void keyReleased(KeyEvent e) { } } }下载本文