import java.io.*;
import java.awt.*;import java.awt.event.*;
import java.applet.*;
import java.util.*;
public class Computer_client extends Applet implements Runnable,ActionListener{
Button 計算;TextField 輸入三邊長度文本框,計算結果文本框;
//DataInputStream in=null; DataOutputStream out=null;
DatagramSocket socket;//用於發送/接收UDP;
DatagramPacket packet,packet1;//用於保存UDP內容;
byte[] buffer1=new byte[1000];
byte[] buffer2=new byte[1000];
Thread thread;
InetAddress addr;
public void init()
{ setLayout(new GridLayout(2,2));
Panel p1=new Panel(),p2=new Panel();
計算=new Button(" 計算");
輸入三邊長度文本框=new TextField(12);計算結果文本框=new TextField(12);
p1.add(new Label("輸入三角形三邊的長度,用逗號或空格分隔:"));
p1.add( 輸入三邊長度文本框);
p2.add(new Label("計算結果:"));p2.add(計算結果文本框);p2.add(計算);
計算.addActionListener(this);
add(p1);add(p2);
//this.setSize(200,300);
//this.setVisible(true);
}
public void start()
{
try
{ //和小程序所駐留的服務器建立UDP連接:
socket=new DatagramSocket(1234);
//packet=new DatagramPacket(buffer1,buffer1.length,"127.0.0.1",4331);
}
catch (IOException e){}
if(thread == null)
{ thread = new Thread(this);
thread.start();
}
}
public void run()
{ String s=null;
while(true)
{ try{
//thread.sleep(1000);//使線程等待壹段時間,以便服務器進行計算
packet1=new DatagramPacket(buffer2,buffer2.length);//生成接收的packet;
socket.receive(packet1);//接受服務器傳來的packet;
s=new String(packet1.getData());
if(s.equals(輸入三邊長度文本框.getText()))
計算結果文本框.setText("計算中,請再按次...");
else
計算結果文本框.setText(s);
}
catch(Exception e) {
計算結果文本框.setText("與服務器已斷開");
break;
}
}
}
public void actionPerformed(ActionEvent e)
{ if(e.getSource()==計算)
{ String s=輸入三邊長度文本框.getText();
if(!s.equals("")) //這個地方源程序有問題
{
buffer1=s.getBytes();
try{
addr=InetAddress.getLocalHost();
packet=new DatagramPacket(buffer1,buffer1.length,addr,4331);
socket.send(packet); //向服務器發送packet;
}
catch(Exception ee){System.out.println("向服務器發送數據報失敗!");};
}
else
計算結果文本框.setText("請輸入內容!");
}
}
}