📄 program.java
字号:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
import java.net.*;
public class programClient extends JFrame implements ActionListener
,Runnable,Destroyable
{
JButton butPort,butServer,butClient,ok;
JTextField tf,tfPortClient,tfPortServer;
static String strRequest="";
int portServer=0,portClient=0;
JLabel lblPortClient,lblPortServer,lblTitle;
Container cp;
DatagramSocket caroSocket=null;
DatagramSocket caroSocket1=null;
DatagramPacket inPacket=null;
DatagramPacket outPacket=null;
byte receiveData[]=new byte[1024];
byte sendData[]=new byte[1024];
sendMessage sm;
String nameMatch="";
Thread t;
static programClient rc;
public programClient()
{
super("Caro game") ;
cp=getContentPane();
cp.setLayout(null);
cp.setBackground(new Color(141,165,181));
sm=new sendMessage();
sm.setSize(400,200);
sm.butSend.addActionListener(this);
sm.butCancel.addActionListener(this);
sm.butHide.addActionListener(this);
sm.butAnswer.setText("Accept");
sm.butAnswer.addActionListener(this);
butPort=new JButton("Invite");
butPort.setMnemonic('E');
butPort.setForeground(new Color(141,0,131));
butPort.setBackground(new Color(0,209,255));
butPort.setBounds(50,130,100,20);
butPort.addActionListener(this);
cp.add(butPort);
ok=new JButton("Ok");
ok.setMnemonic('O');
ok.setBounds(170,130,100,20);
ok.setForeground(new Color(141,0,131));
ok.setBackground(new Color(0,209,255));
ok.addActionListener(this);
ok.setEnabled(false);
cp.add(ok);
butServer=new JButton("Server");
butServer.setMnemonic('S');
butServer.setBounds(210,70,100,20);
butServer.setForeground(new Color(141,0,131));
butServer.setBackground(new Color(0,209,255));
butServer.addActionListener(this);
cp.add(butServer);
butClient=new JButton("Client");
butClient.setMnemonic('C');
butClient.setBounds(210,100,100,20);
butClient.setForeground(new Color(141,0,131));
butClient.setBackground(new Color(0,209,255));
butClient.addActionListener(this);
cp.add(butClient);
lblTitle=new JLabel("Welcome to not and cross game");
lblTitle.setFont(new Font("TimesNewRoman",Font.BOLD,18));
lblTitle.setBounds(10,10,340,20);
lblTitle.setForeground(new Color(225,54,197));
cp.add(lblTitle);
JLabel lblServerName=new JLabel("Play with Computer:");
lblServerName.setBounds(10,40,120,20);
lblServerName.setForeground(new Color(0,120,0));
cp.add(lblServerName);
tf=new JTextField();
tf.setForeground(Color.blue);
tf.setSelectedTextColor(Color.green);
tf.setSelectionColor(Color.darkGray);
tf.setText("localhost");
tf.setBounds(130,40,150,20);
cp.add(tf);
lblPortServer=new JLabel(" You are:");
lblPortServer.setBounds(100,70,150,20);
lblPortServer.setForeground(new Color(0,106,102));
cp.add(lblPortServer);
lblPortClient=new JLabel(" Or You are:");
lblPortClient.setBounds(100,100,200,20);
lblPortClient.setForeground(new Color(0,106,102));
cp.add(lblPortClient);
try
{caroSocket1=new DatagramSocket(4455);
caroSocket=new DatagramSocket();}
catch(Exception e){System.err.println(e);}
t=new Thread(this);
t.start();
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent evt)
{System.exit(0);}
});
this.setResizable(false) ;
}
public void actionPerformed(ActionEvent evt)
{
String strAction=evt.getActionCommand();
if(strAction.equals("Invite"))
{sm.sendShow();ok.setEnabled(false);}
if(strAction.equals("Ok"))
{
try
{
String strMessage="Message :I am played!";
while(strMessage.length()<1024)
{ strMessage+=" ";}
InetAddress serverAddress=InetAddress.getByName
("255.255.255.255");
sendDataServer(strMessage,serverAddress);
clientServer(4567,7654,"Server",nameMatch.trim());
}
catch(Exception e){}
}
if(evt.getSource()==butClient)
{
if(tf.getText().trim().equals("")){}
else
{clientServer(7654,4567,"Client",tf.getText().trim());}
}
if(evt.getSource()==butServer)
{
if(tf.getText().trim().equals("")){}
else
{clientServer(4567,7654,"Server",tf.getText().trim());}
}
if(evt.getSource()==sm.butSend)
{send();sm.butAnswer.setEnabled(false); }
if(evt.getSource()==sm.butHide){sm.setVisible(false);}
if(evt.getSource()==sm.butCancel){sm.tfMessage.setText("");}
if(evt.getSource()==sm.butAnswer){answer();}
}
public void answer()
{
try
{
InetAddress serverAddress=InetAddress.getLocalHost();
String strMessage=" "+serverAddress.getHostName();
while(strMessage.length()<1024)
{ strMessage+=" ";}
nameMatch=nameMatch.substring(nameMatch.indexOf(" "));
serverAddress=InetAddress.getByName(nameMatch.trim());
sendDataServer(strMessage,serverAddress);
sm.setVisible(false);
clientServer(7654,4567,"Client",nameMatch.trim());
}
catch(Exception e){}
}
public void send()
{
if(sm.tfMessage.getText().trim().equals("")){}
else
{
try
{
InetAddress serverAddress=InetAddress.getLocalHost();
String strMessage="Message :"+sm.tfMessage.getText();
strMessage+=" Playwith "+serverAddress.getHostName();
serverAddress=InetAddress.getByName("255.255.255.255");
sendDataServer(strMessage,serverAddress);
sm.setVisible(false);
}
catch(Exception e){}
}
}
public void clientServer(int serverPort,int clientPort,String name,
String nameMatch)
{
caroClient client=new caroClient(nameMatch,clientPort
,serverPort,name);
client.setSize(790,570);
client.setVisible(true);
caroSocket.close();caroSocket.disconnect();
caroSocket1.close();caroSocket.disconnect();
this.setVisible(false);
if(!this.isDestroyed()){this.destroy();}
}
public void receiveDataServer()
{
String strReceive="";int index=10000;
try
{
inPacket=new DatagramPacket(receiveData,receiveData.length);
caroSocket1.receive(inPacket);
strReceive=new String(inPacket.getData());
}
catch(Exception e)
{}
strReceive=strReceive.trim();
if(strReceive.startsWith("Message"))
{
if(strReceive.indexOf("Playwith")>-1)
{
sm.butAnswer.setEnabled(true);
nameMatch=strReceive.substring(strReceive.indexOf("Playwith"));
strReceive=strReceive.substring(0,strReceive.indexOf("Playwith"));
sm.receiveShow(strReceive);
sm.butAnswer.setVisible(true);
}
else
{
sm.receiveShow(strReceive);
sm.butHide.setBounds(130,130,100,25);
sm.butAnswer.setVisible(false);
}
}
else
{
nameMatch=strReceive;
sm.receiveShow("Invitation is accepted !");
sm.butAnswer.setVisible(false);
sm.butHide.setBounds(130,130,100,25);
ok.setEnabled(true);
}
}
public void sendDataServer(String strSend,InetAddress serverAddress)
{
try
{
while(strSend.length()<1024)
{ strSend+=" "; }
sendData=strSend.getBytes();
outPacket=new DatagramPacket(sendData,sendData.length,
serverAddress,4455);
caroSocket.send(outPacket);
}
catch(Exception e){System.out.println(e);}
}
public void run()
{
while(true)
{
try
{
if(caroSocket1.isClosed()){}
else
{ receiveDataServer();}
}
catch(Exception e){System.out.println(e);}
}
}
public void destroy(){ rc=null; }
public boolean isDestroyed()
{
if(this==null){return true;}
else{return false;}
}
public static void main(String arg[])
{
rc=new programClient();
rc.setSize(350,200);
rc.setVisible(true);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -