Java 如何开/关';信号灯';使用DataInputStream?
我想做一个程序,可以通过网络发送信号使用DataInputStream,但我有一个算法的问题 程序其实很简单。我只需要做两个GUI。一个是颜色按钮(红色、黄色和蓝色按钮),另一个只有三个形状,当我们单击按钮时会改变颜色 下面是客户端(信号按钮)代码 这是服务器(信号灯)。这就是问题所在。 对不起,如果我的代码不是那么有效Java 如何开/关';信号灯';使用DataInputStream?,java,swing,user-interface,network-programming,Java,Swing,User Interface,Network Programming,我想做一个程序,可以通过网络发送信号使用DataInputStream,但我有一个算法的问题 程序其实很简单。我只需要做两个GUI。一个是颜色按钮(红色、黄色和蓝色按钮),另一个只有三个形状,当我们单击按钮时会改变颜色 下面是客户端(信号按钮)代码 这是服务器(信号灯)。这就是问题所在。 对不起,如果我的代码不是那么有效 import javax.swing.JPanel; import javax.swing.*; import java.awt.event.*; import java.aw
import javax.swing.JPanel;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.net.*;
import java.io.*;
public class lamp extends JFrame{
ServerSocket ss = null;
Socket s = null;
InputStream in = null;
DataInputStream dis = null;
String iro;
int s1,s2,s3;
private Container contentPane;
public lamp(String title){
super(title);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);
}
});
setSize(670,300);
setResizable(false);
setVisible(true);
}
public void paint(Graphics g){
g.setColor(Color.blue);
g.drawOval(10,50,200,200);
g.setColor(Color.yellow);
g.drawOval(220,50,200,200);
g.setColor(Color.red);
g.drawOval(430,50,200,200);
try{
ss = new ServerSocket(54321);
s = ss.accept();
in = s.getInputStream();
dis = new DataInputStream(in);
iro = dis.readUTF();
s1 = 0;
s2 = 0;
s3 = 0;
if(iro=="1"){
if(s1==0){
s1=1;
g.setColor(Color.blue);
g.fillOval(10,50,200,200);
System.out.println("received blue");
}else{
s1=0;
g.setColor(Color.blue);
g.fillOval(10,50,200,200);
System.out.println("received blue");
}
}
//its the same statement for yellow and red
}catch(Exception e){
System.out.println("error");
}
}
public static void main(String []args){
new lamp("lamp");
}
}
结果
error
error
error
error
error
有什么想法吗?一般来说,您的方法是错误的,请看一看,更多详细信息请参见到您的
catch
块,在该块中打印错误以获取有关原因的更多详细信息要查看错误原因,请更改System.out.println(“错误”);使用e.printStackTrace();然后公布结果again@MadProgrammer谢谢你的建议。我已经使用了System.err.println(to.String())代码>,结果是“地址已在使用”。你能教我如何在切换到其他颜色时“关闭”地址吗?一般来说,你的方法是错误的,请看一看,更多详细信息请参见sadde.printStackTrace()
到您的catch
块,在该块中打印错误以获取有关原因的更多详细信息要查看错误原因,请更改System.out.println(“错误”);使用e.printStackTrace();然后公布结果again@MadProgrammer谢谢你的建议。我已经使用了System.err.println(to.String())代码>,结果是“地址已在使用”。你能教我如何在切换到其他颜色时“关闭”地址吗?
error
error
error
error
error