當前位置:編程學習大全網 - 源碼下載 - 幫我把單線程的程序改成多線程JAVA,急!

幫我把單線程的程序改成多線程JAVA,急!

自定義壹個線程類或者壹個Runnable類。。

並定義壹個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();

}

}

}

}

}

  • 上一篇:5合同模板怎麽寫?
  • 下一篇:在野外沒有火柴打火機怎樣取火
  • copyright 2024編程學習大全網