籍。
import java.applet.*;
import java.awt.*;
import java.net.*;
import java.io.*;
public final class javaCommunicationClient extends Applet
{
private Label label1,label2 ;
private Panel panel1,panel2;
private TextField textfield;
private TextArea textarea;
private DatagramSocket sendSocket,receiveSocket;//声明发送数据报Socket和接收数据报Socket
private DatagramPacket sendPacket,receivePacket;//声明发送数据报文包和接收数据报文包
public void init()
{
setBackground(Color.gray);
setLayout(new BorderLayout());//设置一个布局管理器
panel1=new Panel();
panel1.setLayout(new BorderLayout());//在容器中放置布局管理器
label1=new Label("通话纪录");
textarea=new TextArea(10,20);//文本显示区域
textarea.setText("欢迎您!");
panel1.add("North",label1);//将标签添加到布局管理器中
panel1.add("Center",textarea);
add("North",panel1);
label2=new Label("发言:");//创建另一个容器
panel2.add("Center",label2);
textfield=new TextField(20);
textfield.setText("");
panel2.add("South",textfield);
add("Center",panel2);
show();
}
public void start()
{
waitForPackets();
}
public void waitForPackets()
/*方法waitForPacket用来监听来自于服务器的数据报,当获得数据报后,在文本显示区域显示出来
*/
{
try
{
sendSocket=new DatagramSocket();//实例化一个发送数据报Socket对象
receiveSocket= new DatagramSocket(5001);//实例化一个接收数据报Socket对象,以5001为端口
} catch (SocketException e)//捕获异常
{
textarea.appendText("不能打开数据报Socket,或数据报Socket无法与指定端口连接!");
}
while (true)
{
try
{
byte buf[]=new byte[100];
receivePacket=new DatagramPacket(buf,buf.length);//实例化一个接收数据报文包对象
receiveSocket.receive(receivePacket);//以receivePacket为参数,接受文包
textarea.appendText("\n服务器:\t");
byte[] data=receivePacket.getData();
String receivedString=new String(data);
textarea.appendText(receivedString);//将接收到的数据报文报中的数据显示出来
} catch(IOException e)
{
textarea.appendText("网络通讯出现错误,问题在"+e.toString());
}
}
}
public boolean action(Event e,Object o)
{
try
{textarea.appendText("\n客户端:");
String string=o.toString();
textarea.appendText(string);
byte[] databyte=new byte[100];
string.getBytes(0,string.length(),databyte,0);
sendPacket=new DatagramPacket(databyte,string.length(),InetAddress.getByName("202.38
|