並定義壹個socket類型的屬性。。
構造方法接受壹個socket類型的參數。。對socket屬性用他來初始化。。
然後這個地方。。
Client=server.accept( );
Thread thread=new Thread(Client);//把獲得的客戶端socket穿進去。。
thread.start();
然後在妳自定義的線程或者Runnable類裏面的run方法寫上妳想用那個socket做的事就行了。。這樣與每個客戶端的通信即socket都是壹個單獨的線程了。。
給妳改了下哈。。可能不對哈。。反正妳按照那個思路改的話肯定沒問題的。。
package java07_25;
import java.awt.*;
import java.awt.event.*;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketServer extends Frame implements ActionListener {
Label label = new Label("輸入聊天信息,按回車發送!");
TextField tf = new TextField(20);
TextArea ta = new TextArea();
Panel panel = new Panel();
ServerSocket server;
Socket Client;
InputStream DataIn;
OutputStream DataOut;
public SocketServer() {
super("服務器 ");
setSize(380, 300);
panel.add(label);
panel.add(tf);
tf.addActionListener(this);
add("North", panel);
add("Center", ta);
ta.setBackground(Color.black);
ta.setForeground(Color.yellow);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
show();
try {
server = new ServerSocket(5000);
while (true) {
Client = server.accept();
Thread thread = new Thread(new SSocket(Client));
thread.start();
}
} catch (IOException ioe) {
}
}
public static void main(String args[]) {
new SocketServer();
}
public void actionPerformed(ActionEvent e) {
try {
String str = new String(tf.getText());
byte buf[] = str.getBytes();
tf.setText(" ");
DataOut.write(buf);
ta.append("服務器說:" + str + "\n");
} catch (IOException ioe) {
}
}
class SSocket implements Runnable {
Socket client;
public SSocket(Socket client) {
this.client = client;
}
public void run() {
DataInputStream input;
while (true) {
try {
ta.append("已經和客戶機連接:" + client.getInetAddress()
+ client.getInetAddress().getHostName() + "\n\n");
DataIn = client.getInputStream();
DataOut = client.getOutputStream();
byte buff[] = new byte[512];
DataIn.read(buff);
String str = new String(buff);
ta.append("客戶機說:" + str + "\n");
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}