//server 端的.楼主可以用 命令: "telnet 127.0.0.1 8888"测试或加上client也行
import java.net.*;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.HeadlessException;
import java.awt.Label;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
public class tcpServer extends Frame {
static Button b = new Button(" ");
static Label l1 = new Label("No connection on port 8888");
public tcpServer() throws HeadlessException {
super("Listening");
setLayout(new FlowLayout(FlowLayout.LEFT));
add(b);
add(l1);
b.setBackground(Color.RED);
setVisible(true);
pack();
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
b.addActionListener(new ButtonListener());
}
class ButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
}
}
public static void main(String args[]) {
new tcpServer();
int port;
ServerSocket server_socket;
BufferedReader input;
try {
port = Integer.parseInt(args[0]);
} catch (Exception e) {
System.out.println("port = 8888 (default)");
port = 8888;
}
try {
server_socket = new ServerSocket(port);
System.out.println("Server waiting for client on port "
+ server_socket.getLocalPort());
// server infinite loop
while (true) {
Socket socket = server_socket.accept();
b.setBackground(Color.GREEN);
l1.setText("Connection"+socket.getInetAddress());
System.out.println("New connection accepted "
+ socket.getInetAddress() + ":" + socket.getPort());
input = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
// print received data
try {
while (true) {
String message = input.readLine();
if (message == null)
break;
System.out.println(message);
}
} catch (IOException e) {
System.out.println(e);
}
// connection closed by client
try {
socket.close();
b.setBackground(Color.RED);
l1.setText("No connection on port 8888");
System.out.println("Connection closed by client");
} catch (IOException e) {
System.out.println(e);
}
}
} catch (IOException e) {
System.out.println(e);
}
}
}
//client端的,以下代码可以不用。如想用放到不同文件里编译。再运行
// tcpClient.java by jing5083394
// usage : java tcpClient <server> <port>
// default port is 8888
import java.net.*;
import java.io.*;
public class tcpClient {
public static void main(String[] args) {
int port = 8888;
String server = "localhost";
Socket socket = null;
String lineToBeSent;
BufferedReader input;
PrintWriter output;
int ERROR = 1;
// read arguments
if(args.length == 2) {
server = args[0];
try {
port = Integer.parseInt(args[1]);
}
catch (Exception e) {
System.out.println("server port = 1000 (default)");
port = 1500;
}
}
// connect to server
try {
socket = new Socket(server, port);
System.out.println("Connected with server " +
socket.getInetAddress() +
":" + socket.getPort());
}
catch (UnknownHostException e) {
System.out.println(e);
System.exit(ERROR);
}
catch (IOException e) {
System.out.println(e);
System.exit(ERROR);
}
try {
input = new BufferedReader(new InputStreamReader(System.in));
output = new PrintWriter(socket.getOutputStream(),true);
// get user input and transmit it to server
while(true) {
lineToBeSent = input.readLine();
// stop if input line is "."
if(lineToBeSent.equals(".")) break;
output.println(lineToBeSent);
}
}
catch (IOException e) {
System.out.println(e);
}
try {
socket.close();
}
catch (IOException e) {
System.out.println(e);
}
}
}
『贰』 java中为什么要设置监听器,有什么用
猪哥解答:
1、来private JButton jb=new JButton("按钮自");这句话声明了一个按钮,名字叫jb。
2、jb.addActionListener(this);这里给jb那个按钮设置了监听,默认为点击触发,当然你写的这个监听有点怪异~
3、点击按钮jb触发监听处理方法actionPerformed,在这里可以做你想要的操作,你代码实现的是改变lab这个label标签的内容。
4、至于java中为什么要用监听,这就像银行装监控一样,监视你的一举一动,银行装监控是为了捕捉每个进银行的人的动作,预防危险的发生。
java中做监听同样是为了监视某个客户端动作用的,万一你给我搞破坏怎么办(监听的作用远不止如此),当然也像平时生活中不是所有的地方都要放监控,要不就没法过了,java中也不是所有的地方都要放监听,具体哪里要放监听,不该是在课本里学的,应该根据实际工厂、公司的需求来定。
『叁』 java监听器原理
Java最新的事件处理方法是基于授权事件模型,事件源生成事件并将其发送至一个或多个监听器,监听器简单地等待,直到它收到一个事件。一旦事件被接受,监听器将处理这些事件,然后返回。
事件:在授权事件模型中,事件是一个描述事件源状态改变的对象。 通过鼠标、键盘与GUI界面直接或间接交互都会生成事件。如:按下一个按钮、通过键盘输入一个字符、选择列表框中的一项、点击一下鼠标等。
事件源:事件源是一个生成事件的对象
一个事件源可能会生成不同类型的事件,事件源提供了一组方法,用于为事件注册一个或多个监听器。
每种事件的类型都有其自己的注册方法。一般形式为:publicvoidadd<EventType>Listener(TypeListenere)
AWT采取的事件控制过程:监听器对象属于一个类的实例,这个类实现了一个特殊的接口,名为“监听者接口”
事件源是一个对象,它可以注册一个或多个监听器对象,并向其发送事件对象。
事件源将在发生事件时向所有注册的监听器发送事件对象。
监听器对象使用事件对象中的信息来确定它们对事件的响应
事件模型:
基于代理(授权)事件模型,事件处理是一个事件源授权到一个或者多个事件监听器。其基本原理是:组件激发事件,事件监听器监听和处理事件,可以调用组件的add<EventType>Listener方法向组件注册监听器。把其加入到组件以后,如果组件激发了相应类型的事件,那么定义在监听器中的事件处理方法会被调用。
此模型主要由以三种对象为中心组成
事件源由它来激发产生事件
是产生或抛出事件的对象。
事件监听器由它来处理事件
实现某个特定EventListener接口,此接口定义了一种或多种方法,事件源调用它们以响应该接口所处理的每一种特定事件类型。
事件具体的事件类型
事件类型封装在以java.util.EventObject为根的类层次中。当事件发生时,事件记录发生的一切事件,并从事件源传播到监听器对象
『肆』 在系统启动时,使用java怎么将数据加载到内存数组中
最简单的办法是使用静态变量。变量设置为private的,初始化的时候给变量赋值,其版他方法权若要使用,只能通过get方法取值。这样避免的更改内存中的数据
如:
public class Test{
private static String[] testArgs;
static init(){
给testArgs赋值...
}
public static getArgs(){
return testArgs;
}
}
『伍』 java怎么监听一个方法被执行
在方法里写日志,当方法被调用了就写进日记去,或者在方法里增加一个线程,一旦调用就启动线程做通知。再不济用切面编程。在调用该方法的时候前后通知都行。
『陆』 java如何实现:一个一直在运行的监听程序,每当监听到数据,就把数据发给jsp页面
方法1:可以利用ServletContext类的对象application解决,这个属于整个web应用都公用的内部对象。例如回在监答听器中
public class GetConnListener implements ServletContextListener {
//例如这个是要传的数据
String data="0";
//当此web应用被访问后启用该方法
public void contextInitialized(ServletContextEvent sce) {
//创建application
ServletContext application=sce.getServletContext();
//将数据存入application的属性中
application.setAttribute("Data",data);}
然后再JSP页面,的JSP脚本中写入
String data=(String)sapplication.getAttribute("Data");
out.print(data);
就能狗获取和输出这个数据了。
方法二便是直接在JAVA中把数据存入数据库,JSP从数据库中读出数据。