//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從資料庫中讀出數據。