本文目錄一覽:
- 1、怎樣用java的正則表達式匹配這樣的網址
- 2、急急急,小弟急求一個用java編寫的應用程序,求大神,重謝
- 3、java代碼解析
- 4、JAVA多線程 編程題兩個案例,不會寫,求大神寫出代碼,萬分感謝,多線程還沒學。
- 5、如何利用Java語言實現消息推送到手機app
- 6、高分:求案例代碼:java Socket 加請求參數,訪問http服務端,並列印返回的數據!
怎樣用java的正則表達式匹配這樣的網址
Java中正則表達式匹配的語法規則:以下是整理出來的Java下運用正則表達式實現匹配的程序案例,代碼如下:package org.luosijin.test;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * 正則表達式 * @version V5.0 * @author Admin * @date 2015-7-25 */public class Regex { /** * @param args * @author Admin * @date 2015-7-25 */ public static void main(String[] args) { Pattern pattern = Pattern.compile(“b*g”); Matcher matcher = pattern.matcher(“bbg”); System.out.println(matcher.matches()); System.out.println(pattern.matches(“b*g”,”bbg”)); //驗證郵政編碼 System.out.println(pattern.matches(“[0-9]{6}”, “200038”)); System.out.println(pattern.matches(“//d{6}”, “200038”)); //驗證電話號碼 System.out.println(pattern.matches(“[0-9]{3,4}//-?[0-9]+”, “02178989799”)); getDate(“Nov 10,2009”); charReplace(); //驗證身份證:判斷一個字元串是不是身份證號碼,即是否是15或18位數字。 System.out.println(pattern.matches(“^//d{15}|//d{18}$”, “123456789009876”)); getString(“D:/dir1/test.txt”); getChinese(“welcome to china,江西奉新,welcome,你!”); validateEmail(“luosijin123@163.com”); } /** * 日期提取:提取出月份來 * @param str * @author Admin * @date 2015-7-25 */ public static void getDate(String str){ String regEx=”([a-zA-Z]+)|//s+[0-9]{1,2},//s*[0-9]{4}”; Pattern pattern = Pattern.compile(regEx); Matcher matcher = pattern.matcher(str); if(!matcher.find()){ System.out.println(“日期格式錯誤!”); return; } System.out.println(matcher.group(1)); //分組的索引值是從1開始的,所以取第一個分組的方法是m.group(1)而不是m.group(0)。 } /** * 字元替換:本實例為將一個字元串中所有包含一個或多個連續的「a」的地方都替換成「A」。 * * @author Admin * @date 2015-7-25 */ public static void charReplace(){ String regex = “a+”; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(“okaaaa LetmeAseeaaa aa booa”); String s = matcher.replaceAll(“A”); System.out.println(s); } /** * 字元串提取 * @param str * @author Admin * @date 2015-7-25 */ public static void getString(String str){ String regex = “.+/(.+)$”; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(str); if(!matcher.find()){ System.out.println(“文件路徑格式不正確!”); return; } System.out.println(matcher.group(1)); } /** * 中文提取 * @param str * @author Admin * @date 2015-7-25 */ public static void getChinese(String str){ String regex = “[//u4E00-//u9FFF]+”;//[//u4E00-//u9FFF]為漢字 Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(str); StringBuffer sb = new StringBuffer(); while(matcher.find()){ sb.append(matcher.group()); } System.out.println(sb); } /** * 驗證Email * @param email * @author Admin * @date 2015-7-25 */ public static void validateEmail(String email){ String regex = “[0-9a-zA-Z]+@[0-9a-zA-Z]+//.[0-9a-zA-Z]+”; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(email); if(matcher.matches()){ System.out.println(“這是合法的Email”); }else{ System.out.println(“這是非法的Email”); } }}
急急急,小弟急求一個用java編寫的應用程序,求大神,重謝
//代碼是樓上的,幫你排了一下版。
public class Account {
private int id;
private double balance;
private double annuallnterestRate;
private Date dateCreated;
public Account() {
this.id = 0;
this.balance = 0;
this.annuallnterestRate = 0;
this.dateCreated = new Date();
}
public Account(int id, double balance) {
this.id = id;
this.balance = balance;
this.dateCreated = new Date();
}
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
public double getBalance() {
return this.balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
public double getAnnuallnterestRate() {
return this.annuallnterestRate;
}
public void setAnnuallnterestRate(double annuallnterestRate) {
this.annuallnterestRate = annuallnterestRate;
}
public Date getDateCreated() {
return this.dateCreated;
}
public double getMonthlyInterestRate() {
double monthlyInterest = java.lang.StrictMath.pow(
this.annuallnterestRate, 1.0 / 12) – 1;
return monthlyInterest;
}
public String withdraw(double amount) {
this.balance = this.balance – amount;
return “withdraw success”;
}
public String deposit(double amount) {
this.balance = this.balance + amount;
return “deposit success”;
}
public static void main(String[] args) {
Account account = new Account(1122, 20000.00);
account.setAnnuallnterestRate(0.045);
account.withdraw(2500.00);
account.deposit(3000.00);
System.out.println(account.getBalance());
System.out.println(account.getMonthlyInterestRate());
System.out.println(account.getDateCreated());
}
}
java代碼解析
一樓的說的夠全面了,不過稍有誤解.
再來表示抱歉,我對編程語言中的中文名詞非常不了解,所以如果以下的回復對你的閱讀或者理解造成困難,請見諒.
1.首先,要明白這個問題的答案,需要了解call (pass) by value 和 call (pass) by reference 的區別.簡單來說:
call by value通常是複製這個parameter的值去另外一塊內存里,然後傳給function, 所以在method/function裡邊對這個變數的所有變更,實際上都是對複製過來的鏡像進行操作,不會對原本的variable有任何影響.
call by reference是將parameter的reference傳給function,簡單點理解就是直接把variable傳給function.所以說這個variable的值是可以被function改變的.這個用法在c/c++中非常常見,用法是variable_name.
2.再來,在Java裡邊,你可以很簡單的理解為: Java中只有call by value, 也就是說,所以所有傳給function的parameter本身都不會被改變. (這是最簡單直白的理解,當然也有另一種常從sun的人那邊聽到的說法:Java是call by value + call by reference by value)
3.那麼現在的問題就是為什麼第二個結果是2了. 首先說一下sun官方的解釋: 對於reference type在作為parameter/argument的時候,也是call by value, 但是在你擁有足夠許可權時(比方說那個變數是public的, 不是final的等等各種符合的情況),可以修改這個object中fields的值(也就是屬於這個object(嚴謹點講是an instance of the object) 內部的變數, 在你的例子中, ko 裡邊的 a 就是一個field, 所以update(ko)會使ko.a變成2).
4.如果你是一個有過c/c++學習經驗的人或者你以上的解釋很難理解,以下這種說法或許更適合你 (當然了,這只是大多包括我在內有c經驗的人的一種理解方式)
這裡可以引入一個新的概念,pointer. 這是一種比較特殊的變數,它內部所儲存的東西,其實只是另外一個變數的內存地址. 如果對內存沒有概念,你可以把它簡單理解為是風箏的線軸,雖然看它本身看不出什麼端倪,但是順著摸過去總會找到風箏,看到它是什麼樣子. 以pointer方式理解Java的人,通常會說: Type variable = new Type(); 這個過程中,最後生成的這個variable其實就是一個pointer,而不是instance本身.
在Java中, 有c/c++經驗的人通常認為Java是call by value.同時,當一個變數用在儲存reference type的時候,實際上儲存的是它的pointer,這也一樣可以解釋為什麼ko.a會有2這個結果,因為雖然pointer被傳到function裡邊時,本身是call by value,無法被改變.但這並不影響function本身對這個pointer指向的object的內容做任何改變. 當然,再次聲明,這只是一種幫助有c/c++經驗的人理解的方法. Sun本身嚴正聲明Java裡邊沒有pointer這個東西的存在.
5. 再來解釋一下為什麼說樓上所說的(或者說樓上引用的)理解略有偏差.
引用”我們上面剛學習了JAVA的數據類型,則有:值類型就是按值傳遞的,而引用類型是按引用傳遞的” 這句話很明顯的有兩點錯誤. 第一點,如果我上面所說的,Java是沒有call by reference的.
第二點,暫且假設Java裡邊是有call by reference的, 這句話依然不成立.
Java中的變數有兩種類型: primitive types 和 reference type.
primitive type包括byte, short, int, long, char, boolean, float和double.
而這8種之外的所有的,都是reference type.
下面是一段對你的貼上來的code的一點延伸,希望可以幫助你更好的理解Java中的argument / parameter到底是如何運作的.
public class Test {
public static void main(String[] args) {
int a = 1;
Koo koo = new Koo();
Object o = new Integer(1);
Koo newKoo = new Koo();
update(a);
update(koo);
update(o);
update(newKoo);
newUpdate(newKoo);
System.out.println(a);
System.out.println(koo.a);
System.out.println(o);
System.out.println(newKoo.a);
}
static void update(int a) {
a++;
}
static void update(Koo koo) {
koo.a++;
}
static void update(Object o) {
o = (int) (Integer.parseInt(o.toString()) + 1);
}
static void newUpdate(Koo koo) {
koo = new Koo();
}
}
class Koo {
int a = 1;
}
/*
o = (int) (Integer.parseInt(o.toString()) + 1); 這一行中的(int)純粹是多餘的,是否有這個casting對code本身沒有任何影響. 如果你高興也可以用
o = new Integer(Integer.parseInt(o.toString()) + 1);
或者乾脆
o = Integer.parseInt(o.toString()) + 1;
*/
以上這些code運行之後會得到1 2 1 2的結果. 後面兩個結果可以很好的說明, 即使對objects (reference type variables) 來看, Java所應用的也並不是call by reference. 否則的話,以上code運行結果應該是1 2 2 1
希望你可以真正理解這個新的例子中,產生1212這個結果的原因,從而對Java中的arguments有一個系統全面的認識.
圖片是相關資料的鏈接,知道里貌似不能加網址
JAVA多線程 編程題兩個案例,不會寫,求大神寫出代碼,萬分感謝,多線程還沒學。
/*
class A extends Thread
{
public void run()
{
try
{
Thread.sleep(1000);
}catch(Exception e)
{
System.out.println(“A ERROR!”);
}
System.out.println(“AAAA”);
}
}
class B extends Thread
{
public void run()
{
try
{
Thread.sleep(2000);
}catch(Exception e)
{
System.out.println(“B ERROR!”);
}
System.out.println(“BBBB”);
}
}
class C extends Thread
{
public void run()
{
try
{
Thread.sleep(3000);
}catch(Exception e)
{
System.out.println(“C ERROR!”);
}
System.out.println(“CCCC”);
}
}
public class Test_1
{
public static void main(String[] args)
{
A a = new A();
B b = new B();
C c = new C();
a.start();
b.start();
c.start();
}
}*/
public class Test_1
{
public static void main(String[] args)
{
A a = new A();
B b = new B();
C c = new C();
Thread ta = new Thread(a);
Thread tb = new Thread(b);
Thread tc = new Thread(c);
ta.start();
tb.start();
tc.start();
}
}
class A implements Runnable
{
public void run()
{
try
{
Thread.sleep(1000);
}catch(Exception e)
{
System.out.println(“A ERROR!”);
}
System.out.println(“AAAA”);
}
}
class B implements Runnable
{
public void run()
{
try
{
Thread.sleep(2000);
}catch(Exception e)
{
System.out.println(“B ERROR!”);
}
System.out.println(“BBBB”);
}
}
class C implements Runnable
{
public void run()
{
try
{
Thread.sleep(3000);
}catch(Exception e)
{
System.out.println(“C ERROR!”);
}
System.out.println(“CCCC”);
}
}
案例一的兩種方法已經寫好;現在有事,晚上再把案例二代碼寫一下,應該沒關係吧!
抱歉,是一個線程類,我看錯了,晚上重發一下代碼!
如何利用Java語言實現消息推送到手機app
首先APP後台就得有這樣的輪詢程序,比如每次打開app時觸發,比如每隔10分鐘觸發,每次觸發就調用下伺服器端的服務,服務端去拉取要推送的信息,或者知道對方的手機號或微信號,那就直接調用簡訊介面或直接發送微信信息了。
極光推送服務是一款免費的第三方推送消息的平台。極光推送從整體來說還不錯,具有以下優勢:
1、開放註冊,免費向所有的開發者開放使用。
2、極光推送 – JPush SDK
JPush 是經過考驗的大規模 App 推送平台,每天推送消息量級為數百億條。 開發者集成 SDK 後,可以通過調用 API 推送消息。同時,JPush 提供可視化的 web 端控制台發送通知,統計分析推送效果。
3、開發者可以輕鬆地通過極光發送各個移動平台的系統通知,還可以在控制台編輯多種富文本展示模板; 極光還提供自定義消息的透傳,客戶端接到消息內容後根據自己的邏輯自由處理。
4、7*24小時專人專線服務:專屬安全團隊支持,24 小時隨時響應,免除後顧之憂。
極光是一個不錯的選擇,深圳市和訊華谷信息技術有限公司(極光 Aurora Mobile,納斯達克股票代碼:JG)成立於2011年,是中國領先的開發者服務提供商,專註於為開發者提供穩定高效的消息推送、一鍵認證以及流量變現等服務,助力開發者的運營、增長與變現。
同時,極光的行業應用已經拓展至市場洞察、金融風控與商業地理服務,助力各行各業優化決策、提升效率。
高分:求案例代碼:java Socket 加請求參數,訪問http服務端,並列印返回的數據!
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
public class Client extends JFrame
{
/**
*
*/
private static final long serialVersionUID = -4733717749265129757L;
Container con=null;
JTextArea jta = null;
JTextField jtf = null;
//ArrayList al = new ArrayList();
//ServerSocket ss = null;
Socket s = null;
Client(String ip,int port)
{
try
{
s = new Socket(ip,port); //創建一個流套接字並將其連接到指定 IP 地址的指定埠號。
launchFrame();
}
catch(Exception e)
{
e.printStackTrace();
}
new Thread(new ClientR()).start();
}
public void sent(String str)
{ //發送消息方法
try
{
DataOutputStream dos = new DataOutputStream(s.getOutputStream()); // 創建一個新的數據輸出流,將數據寫入指定 返回s的套接字的輸出流。
dos.writeUTF(str);
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void disconnect() throws Exception
{
s.close(); //失去連接,關閉線程s
}
class ClientR implements Runnable
{//客戶端運行
/*Runnable 介面應該由那些打算通過某一線程執行其實例的類來實現。類必須定義一個稱為 run 的無參數方法。
設計該介面的目的是為希望在活動時執行代碼的對象提供一個公共協議。例如,Thread 類實現了 Runnable。
激活的意思是說某個線程已啟動並且尚未停止。
此外,Runnable 為非 Thread 子類的類提供了一種激活方式。
通過實例化某個 Thread 實例並將自身作為運行目標,就可以運行實現 Runnable 的類而無需創建 Thread 的子類。
大多數情況下,如果只想重寫 run() 方法,而不重寫其他 Thread 方法,那麼應使用 Runnable 介面。這很重要,
因為除非程序員打算修改或增強類的基本行為,否則不應為該類創建子類。
*/
public void run()
{
try
{
DataInputStream dis = new DataInputStream(s.getInputStream());//使用指定的底層 s.getInputStream(s的套接字的輸入流) 創建一個 DataInputStream(數據輸入流)
String str = dis.readUTF();
while(true)
{
jta.append(str+”\n”);
str = dis.readUTF();
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
public void startClient()
{ //客戶端啟用
try
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //讀取數據流
String str = br.readLine();
System.out.println(str);
while(true)
{
sent(str); //發送數據
if(str.equals(“q”))
{ //如果讀取的字元為q
disconnect(); //斷開連接
return ;
}
str=br.readLine();
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void launchFrame() throws IOException
{ //客戶端面板布局
con = this.getContentPane();
jta = new JTextArea();
jtf = new JTextField();
final JTextField jtf1=new JTextField(10);
final JButton jb=new JButton(“確認”);
Panel p=new Panel();
//Panel p1=new Panel();
JLabel jl=new JLabel();
jl.setText(“your name:”);
//jl.getVerticalTextPosition();
jtf1.setBackground(Color.PINK);
jtf1.setBounds(10, 10, 10, 10);
p.add(jl);
p.add(jtf1);
p.add(jb);
jb.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
//e.getWhen();
e.getActionCommand();
jtf.setText(jtf1.getText().toString()+”say:”);
}
});
jta.setBackground(Color.LIGHT_GRAY);
jta.setEditable(false); //不可編輯文本域
JScrollPane jsp = new JScrollPane(jta, //jta上滾動條的創建
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
//con.add(jb,BorderLayout.WEST);
con.add(jsp,BorderLayout.CENTER);
con.add(p,BorderLayout.NORTH);
con.add(jtf,BorderLayout.SOUTH);
jtf.addActionListener(new ActionListener()
{ ///事件監聽
public void actionPerformed(ActionEvent e)
{
String str = jtf.getText().toString();
Client.this.sent(str);
jtf.setText(jtf1.getText().toString()+”say:”);
}
});
this.setTitle(“聊天客戶端,襲風版”);
this.setBounds(200,200,300,400);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setBackground(Color.blue);
this.setVisible(true);
}
public static void main (String[] args)
{
System.out.println(“===1”);
Client cli = new Client(“127.168.1.1”,3456); //創建一個客戶端,並將其連接到指定 IP 地址的指定埠號,其埠號與伺服器端一致。與伺服器建立連接
System.out.println(“===2”);
cli.startClient(); //127.0.0.1為本機埠
}
}
//
//import java.net.*;
//import java.io.*;
//
///*
// 發送給伺服器端
//*/
//class Send implements Runnable
//{
// private Socket socket;
// Send(Socket socket)
// {
// this.socket = socket;
// }
// public void run()
// {
// try
// {
// BufferedReader bufr =
// new BufferedReader(new InputStreamReader(System.in));
//
// String line = null;
// while((line=bufr.readLine())!=null)
// {
// if(“886”.equals(line))
// {
// socket.close();
// break;
// }
// byte[] bufString = line.getBytes();
//
// //通過socket對象獲取socket流中的輸出流對象。
// OutputStream out = socket.getOutputStream();
// out.write(bufString);
//
// InputStream in = socket.getInputStream();
// byte[] buf = new byte[1024];
// int num = in.read(buf);
// String str = new String(buf,0,num);
//
// System.out.println(“server:”+str);
// }
//
//
// }
// catch (Exception e)
// {
// System.out.println(e.toString());
// }
// }
//}
//
///*
// 建立伺服器
//*/
//class Rece implements Runnable
//{
// //1,建立服務端的socket服務。並監聽一個埠。以獲取客戶端發來的數據。
// private ServerSocket serverSocket;
// Rece(ServerSocket serverSocket)
// {
// this.serverSocket = serverSocket;
// }
// public void run()
// {
// try
// {
// while(true){
// System.out.println(“============4”);
// Socket socket = serverSocket.accept();
// System.out.println(“============5”);
// String ip = socket.getInetAddress().getHostAddress();
// System.out.println(“============6”);
// System.out.println(ip+”…connected”);
// System.out.println(“============7”);
// BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// System.out.println(“============8”);
// String line =””;
// System.out.println(“============9”);
//
// OutputStream out = socket.getOutputStream();
// out.write(“開始”.getBytes());
//
// while((line= in.readLine())!=null){
// System.out.println(line);
// }
//
// }
// }
// catch (Exception e)
// {
// System.out.println(e.toString());
// }
// }
//}
//
//
//class ChatDemoServer
//{
// public static void main(String[] args) throws Exception
// {
// //1,建立服務端的socket服務。並監聽一個埠。以獲取客戶端發來的數據。
// System.out.println(“========1”);
// ServerSocket rece = new ServerSocket(8082);
// rece.close();
// System.out.println(“========2”);
// new Thread(new Rece(rece)).start();
// System.out.println(“========3”);
// }
//}
//
//
//class ChatClient
//{
// public static void main(String[] args) throws Exception
// {
// //1,建立服務端的socket服務。並監聽一個埠。以獲取客戶端發來的數據。
// //建立客戶端socket服務。並去連接指定的服務端。
// Socket send = new Socket(“169.254.1.60”,10086);
// if(send == null){
// System.out.println(“【創建Socket失敗!】”);
// return;
// }
// new Thread(new Send(send)).start();
// }
//}
import java.net.*;
import java.io.*;
import java.util.*;
//import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
public class Server extends JFrame
{
/**
* 套接字介面可分為三類:公認埠 註冊埠 動態和/或私有埠
套接字,簡單的說就是通信的兩方的一種約定,用套接字中的相關函數來完成通信過程
*/
private static final long serialVersionUID = 4130666237241201704L;
Container con = null; //容器
JTextArea jta = null; //文本區
ServerSocket ss = null; //初始化伺服器套接字
ArrayList al = new ArrayList();//ArrayList容器
Server(int port)
{ //構造函數
try
{
ss=new ServerSocket(port); // 創建綁定到特定埠的伺服器套接字。
}
catch(Exception e)
{
e.printStackTrace();
}
launchFrame();
}
public void severStart()
{ //線程開始
while(true)
{
try{
Socket s = ss.accept(); //偵聽並接受到此套接字(port)的連接。
al.add(new ServerR(s));
jta.append(“New Client:”+”\n Ip: “+s.getInetAddress()+”:”+s.getPort()+”\n” //得到客戶端本地地址,埠和客戶端數量
+”Clients count:”+al.size()+”\n”);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
class ServerR implements Runnable
{
Socket s = null; //創建新服務線程
ServerR(Socket s)
{
this.s = s;
new Thread(this).start();//啟動新線程
}
public void sent(String str)
{ //發送數據流方法
try
{
DataOutputStream dos = new DataOutputStream(s.getOutputStream()); //從s套接字中讀出輸出數據流
dos.writeUTF(str); //使用 UTF-8 修改版編碼將一個字元串寫入基礎輸出流。
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void run()
{
try
{
DataInputStream dis = new DataInputStream(s.getInputStream());
String str = dis.readUTF(); //讀出輸入的數據流
while(true)
{
// System.out.println (str);
Iterator ite = al.iterator(); //生成list迭代器
while(ite.hasNext())
{ //如果仍有可迭代的元素,返回true
((ServerR)ite.next()).sent(str); //返回(ServerR)的下一個元素,並發送它
//先遍歷ServerR中的所有線程
}
str=dis.readUTF();
}
}
catch(Exception e)
{
try{ //客戶端關閉捕捉
s.close(); //關閉一個相關客戶端線程
al.remove(this); //從迭代器指向的集合中移除迭代器返回的最後一個元素
jta.append(“A client quit!\nClients count:”+al.size()+”\n”); //統計客戶端現有的數量
}
catch(Exception e2)
{
e2.printStackTrace();
}
e.printStackTrace();
}
}
}
public void launchFrame()
{ //伺服器端面板布局
con = this.getContentPane();
jta = new JTextArea();
jta.setEditable(false); //不可編輯文本域
JScrollPane jsp = new JScrollPane(jta,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
con.add(jsp,BorderLayout.CENTER);
this.setTitle(“聊天服務端,襲風版”);
this.setBounds(200,200,300,400);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main (String[] args)
{
Server s = new Server(3456); //創建伺服器S 埠為3456
s.severStart();
}
}
原創文章,作者:J3C3G,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/128080.html