導航:首頁 > 編程語言 > java客戶端編程

java客戶端編程

發布時間:2022-05-21 07:30:07

1. java網路編程應該怎樣在客戶端和伺服器間實現通信

以前寫的,照貼了。。。伺服器端:import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.*;
import java.net.*;/*6、 採用UDP協議,編寫一個Java網路應用程序,該應用分伺服器端程序和客戶端程序兩部分。
* 客戶端指定一個伺服器上的文件名,讓伺服器發回該文件的內容,或者提示文件不存在。
* (20分)(服務端程序和客戶端程序分別命名為Server.java和Client.java)*/
public class N4BT6 extends Frame
{
DatagramSocket socket ;
DatagramPacket packet ;byte[] buf ;
File file ;
FileInputStream input;
String message = "該文件不存在";
TextArea text;
public N4BT6(String title)
{
super(title);
text = new TextArea(6,4);
add(text);
setSize(400, 300);
setVisible(true);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
dispose();
}
});

buf = new byte[1024];
try
{
socket = new DatagramSocket(1230);
packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);
file = new File(new String(packet.getData()));
socket = new DatagramSocket();
}
catch (Exception e)
{e.printStackTrace();
}

if(file.exists())
{
try
{
buf = new byte[(int)file.length()];
packet = new DatagramPacket(buf,buf.length,InetAddress.getLocalHost(),1234);
input = new FileInputStream(file);
input.read(buf);
socket.send(packet);
}
catch (IOException e)
{
e.printStackTrace();
}
}
else
{
try
{
packet = new DatagramPacket(message.getBytes(),message.getBytes().length,
InetAddress.getLocalHost(),1234);
socket.send(packet);
}
catch (Exception e)
{
e.printStackTrace();
}
}

}
public static void main(String[] args)
{
new N4BT6("Server");
}
}
客戶端:import java.awt.*;
import java.awt.event.*;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;public class N4BT6_2 extends Frame
{
TextArea text;
String message = "Q.txt";
DatagramSocket socket ;
DatagramPacket packet;
byte[] buf;
public N4BT6_2(String title)
{
super(title);
text = new TextArea(6,4);
add(text);
setSize(400, 300);
setVisible(true);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
dispose();
}
});
try
{

socket = new DatagramSocket();
packet = new DatagramPacket(message.getBytes(),message.getBytes().length,
InetAddress.getLocalHost(),1230);
socket.send(packet);
}
catch (Exception e)
{
e.printStackTrace();
}

try
{
buf = new byte[1024];
socket = new DatagramSocket(1234);
packet = new DatagramPacket(buf,buf.length);
socket.receive(packet);
text.append(new String(buf));
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
new N4BT6_2("Client");
}
}

2. 如何用java實現ftp客戶端程序

FTP 的主要操作都是基於各種命令基礎之上的。常用的命令有: · 設置傳輸模式,它包括ASCⅡ(文本) 和BINARY 二進制模式; · 目錄操作,改變或顯示遠程計算機的當前目錄(cd、dir/ls 命令); · 連接操作,open命令用於建立同遠程計算機的連接;close命令用於關閉連接; · 發送操作,put命令用於傳送文件到遠程計算機;mput 命令用於傳送多個文件到遠程計算機; · 獲取操作,get命令用於接收一個文件;mget命令用於接收多個文件。 編程思路 根據FTP 的工作原理,在主函數中建立一個伺服器套接字埠,等待客戶端請求,一旦客戶端請求被接受,伺服器程序就建立一個伺服器分線程,處理客戶端的命令。如果客戶端需要和伺服器端進行文件的傳輸,則建立一個新的套接字連接來完成文件的操作。 編程技巧說明 http://www.jacken.com.cn/Programming/Java/2008-10-24/Java-.html

3. java 編程做客戶端時要注意什麼

Java客戶端程序,早期都是用Swing,AWT開發的。目前比較流行的Java客戶端應該是基於Eclipse
RCP的。如果你基於Eclipse RCP來做的話,要注意的地方,RCP這個框架都考慮到。推薦基於Eclipse RCP的客戶端開發。

4. java 客戶端開發 框架有哪些

JAVA軟體開發開發框架多達幾十種,瑭錦Tanjurd總結列舉了3種最常見也是最常用方便的3種工具:
1、Struts:Struts是一個基於Sun J2EE平台的MVC框架,主要是採用Servlet和JSP技術來實現的
2、Spring:Spring是輕量級的J2EE應用程序框架。
3、Hibernate:Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了輕量級的對象封裝,使得Java程序員可以使用對象編程思維來操縱資料庫。Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化。它還可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序實用,也可以在Servlet/JSP的Web應用中使用

5. JAVA廣泛運用在哪些領域

先給大家簡單介紹一下Java的三大就業方向。

1、Web開發

Web開發語言很多,Java是其中之一。Java在開發高訪問、高並發、集群化的大型網站方面有很大的優勢,例如人人網、去哪兒網、美團等。

2、Android開發

Android是全球最大的智能手機操作系統,根據Strategy Analytics研究報告顯示,全球智能手機出貨量在2016年第三季度達到3.75億台。Android操作系統獲得了創紀錄的88%全球市場份額,擠壓了蘋果iOS和其他平台。Android應用的主要開發語言就是Java。

Android 從2010年才開始走入大眾視野,雖然最近幾年發展非常快速,但人才積累卻沒有跟上,優秀的Android開發工程師仍然存在不小的缺口,這也是導致Android開發人員工資高,難招人的原因。

3、客戶端開發

Java客戶端開發主要面向政府、事業單位和大型企業,如醫療、學校、OA、郵箱、投票、金融、考試、物流、礦山等信息方面的系統。

但是客戶端開發往往不是這些企業的主要業務,而是為主要業務提供輔助,以便企業能夠更加高效的運營,因此必然不是企業的主要部門。雖然待遇可能和前面兩者差不多,但是前景卻不看好,企業沒有精心打磨這些產品並推向市場的動力,都是內部員工使用,能用就好。

以上就是介紹的Java開發的三大就業方向。只要你技術掌握好了,Java還是非常好就業的。

6. 基於JAVA socket的伺服器客戶端編程

要完成這個工作,需要完成三個部分的工作,以下依次說明:

一、建立伺服器類

Java中有一個專門用來建立Socket伺服器的類,名叫ServerSocket,可以用伺服器需要使用的埠號作為參數來創建伺服器對象。

ServerSocket server = new ServerSocket(9998)

這條語句創建了一個伺服器對象,這個伺服器使用9998號埠即在埠9998上注冊服務,這里稍微要注意的是埠的分配必須是唯一的。因為埠是為了唯一標識每台計算機唯一服務的,另外埠號是從0~65535之間的,前1024個埠已經被Tcp/Ip 作為保留埠,因此你所分配的埠只能是1024個之後的。當一個客戶端程序建立一個Socket連接,所連接的埠號為9998時,伺服器對象server便響應這個連接,並且server.accept()方法會創建一個Socket對象。伺服器端便可以利用這個Socket對象與客戶進行通訊。

Socket incoming = server.accept() ; // 監聽窗口,等待連接

進而得到輸入流和輸出流,並進行封裝

BufferedReader in = new BufferedReader(new

InputStreamReader(incoming.getInputStream()));

/*

當讀取文件時,先把內容讀到緩存中,當調用in.readLine()時,再從緩存中以字元的方式讀取數據(以下簡稱「緩存位元組讀取方式」)。

*/

PrintWriter ut = new PrintWriter(incoming.getOutputStream(),true);

隨後,就可以使用in.readLine()方法得到客戶端的輸入,也可以使用out.println()方法向客戶端發送數據。從而可以根據程序的需要對客戶端的不同請求進行回應。

在所有通訊結束以後應該關閉這兩個數據流,關閉的順序是先關閉輸出流,再關閉輸入流,即使用

out.close();

in.close();

二、建立客戶端代碼

相比伺服器端,客戶端要簡單一些,客戶端只需用伺服器所在機器的ip以及伺服器的埠作為參數創建一個Socket對象。得到這個對象後,就可以用"建立伺服器"部分介紹的方法實現數據的輸入和輸出。

Socket socket = new Socket("168.160.12.42",9998);

或:

Socket socket = new Socket(InetAddress.getLocalHost(),5678); // 向主機名為InetAddress.getLocalHost()的伺服器申請連接

客戶機必須知道有關伺服器的IP地址,對於著一點Java也提供了一個相關的類InetAddress 該對象的實例必須通過它的靜態方法來提供,它的靜態方法主要提供了得到本機IP 和通過名字或IP直接得到InetAddress的方法。

in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

out = new PrintWriter(socket.getOutputStream(),true);

以上的程序代碼建立了一個Socket對象,這個對象連接到ip地址為168.160.12.42的主機上、埠為9998的伺服器對象。並且建立了輸入流和輸出流,分別對應伺服器的輸出和客戶端的寫入。

三、實例分析

服務方:

import java.io.*;
import java.net.*;
public class MyServer {
public static void main(String[] args) throws IOException{
ServerSocket server=new ServerSocket(5678); //在埠5678上注冊服務
Socket client=server.accept(); // 監聽窗口,等待連接
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));

BufferedReader serverInput=new BufferedReader(new InputStreamReader(System.in));
PrintWriter ut=new PrintWriter(client.getOutputStream());
while(true){
String str=in.readLine(); //// 讀取從client傳來的數據信息

str = serverInput.readLine(); // 讀取用戶鍵盤輸入的字元串
System.out.println(str); //伺服器控制台輸出數據信息
out.println("has receive...."); //伺服器向客戶端發送信息:has receive....
out.flush();
if(str.equals("end"))
break;
}
client.close();
}
}

這個程序的主要目的在於伺服器不斷接收客戶機所寫入的信息只到,客戶機發送"End"字元串就退出程序,並且伺服器也會做出"Receive"為回應,告知客戶機已接收到消息。

客戶機代碼:

import java.net.*;
import java.io.*;

public class Client{
static Socket server;

public static void main(String[] args)throws Exception{
server=new Socket(InetAddress.getLocalHost(),5678); // 向主機名為InetAddress.getLocalHost()的伺服器申請連接
BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream())); //客戶端建立輸入流並進行封裝
PrintWriter ut=new PrintWriter(server.getOutputStream());
BufferedReader wt=new BufferedReader(new InputStreamReader(System.in)); //客戶端從鍵盤輸入信息

while(true){
String str=wt.readLine(); //客戶端讀取(獲得)鍵盤的字元串

String str1=in.readLine(); // 從伺服器獲得字元串
out.println(str); //客戶端向伺服器發送信息
out.flush();
if(str.equals("end")){
break;
}
System.out.println(in.readLine());
}
server.close();
}
}

客戶機代碼則是接受客戶鍵盤輸入,並把該信息輸出,然後輸出"End"用來做退出標識。

這個程序只是簡單的兩台計算機之間的通訊,如果是多個客戶同時訪問一個伺服器呢?你可以試著再運行一個客戶端,結果是會拋出異常的。那麼多個客戶端如何實現呢?

其實,簡單的分析一下,就可以看出客戶和服務通訊的主要通道就是Socket本身,而伺服器通過accept方法就是同意和客戶建立通訊.這樣當客戶建立Socket的同時。伺服器也會使用這一根連線來先後通訊,那麼既然如此只要我們存在多條連線就可以了。那麼我們的程序可以變為如下:

伺服器:

import java.io.*;
import java.net.*;

public class MyServer {
public static void main(String[] args) throws IOException{
ServerSocket server=new ServerSocket(5678);
while(true){
Socket client=server.accept();
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter ut=new PrintWriter(client.getOutputStream());
while(true){
String str=in.readLine();
System.out.println(str);
out.println("has receive....");
out.flush();
if(str.equals("end"))
break;
}
client.close();
}
}
}

這里僅僅只是加了一個外層的While循環,這個循環的目的就是當一個客戶進來就為它分配一個Socket直到這個客戶完成一次和伺服器的交互,這里也就是接受到客戶的"End"消息.那麼現在就實現了多客戶之間的交互了。但是.問題又來了,這樣做雖然解決了多客戶,可是是排隊執行的。也就是說當一個客戶和伺服器完成一次通訊之後下一個客戶才可以進來和伺服器交互,無法做到同時服務,那麼要如何才能同時達到既能相互之間交流又能同時交流呢?很顯然這是一個並行執行的問題了。所以線程是最好的解決方案。

那麼下面的問題是如何使用線程.首先要做的事情是創建線程並使得其可以和網路連線取得聯系。然後由線程來執行剛才的操作,要創建線程要麼直接繼承Thread要麼實現Runnable介面,要建立和Socket的聯系只要傳遞引用就可以了.而要執行線程就必須重寫run方法,而run方法所做的事情就是剛才單線程版本main所做的事情,因此我們的程序變成了這樣:

import java.net.*;
import java.io.*;

public class MultiUser extends Thread{
private Socket client;

public MultiUser(Socket c){
this.client=c;
}

public void run(){
try{
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter ut=new PrintWriter(client.getOutputStream());
//Mutil User but can't parallel
while(true){
String str=in.readLine();
System.out.println(str);
out.println("has receive....");
out.flush();
if(str.equals("end"))
break;
}
client.close();
}catch(IOException ex){
}finally{
}
}

public static void main(String[] args)throws IOException{
ServerSocket server=new ServerSocket(5678);
while(true){
//transfer location change Single User or Multi User
MultiUser mu=new MultiUser(server.accept());
mu.start();
}
}
}

我的類直接從Thread類繼承了下來.並且通過構造函數傳遞引用和客戶Socket建立了聯系,這樣每個線程就有了。一個通訊管道.同樣我們可以填寫run方法,把之前的操作交給線程來完成,這樣多客戶並行的Socket就建立起來了。

7. 學習JAVA的客戶端編程主要學習那些,要掌握那些,要理解那些

Java總有它的千般好處使你選擇它,但這些隨便翻翻書或在網上逛一圈就能找到答案。在本文中,筆者把自己學習Java的一些切身體會和過程寫出來,供初學者做個參考。

??我在學習Java的過程中主要圍繞以下幾個方面來學習:

??1.時刻提醒自己Java是一種OOP語言工具,而不僅僅是編碼,只有這樣才能總體把握和運用Java。

??2.在學習的過程中,最好能夠了解Java的底層機制,而不是僅僅停留在表層,不是抄書上的例子運行出結果就可以。要注意,即便對一個簡單的例子也要有耐心去琢磨、調試、改動。

??3.在學習的過程中一定要動手做、寫代碼,而不是抱一本書看看就行。很多東西和體會必須自己動手才能真正屬於自己,最好能參與一些實際的項目。

??4.在學到一定階段後,你開始希望用學過的東西做些什麼。這時的你應該開始學習一些更多、更復雜的知識,比如J2EE平台的構建、EJB的開發等。對於這一部分,我建議最好找一本較薄的書先了解一個大概,心裡有個總體的認識,對更多的技術術語做個初步掌握。我認為這個階段看看《J2EE技術實踐》很不錯,它可以讓你了解J2EE包含的各種技術和框架,同時提供很多實際的例子來加深對J2EE的整體了解。

8. 怎麼用java編寫簡單客戶端程序

我這里有一個例子希望能夠幫助你

public class Client{
private Socket socket;
try{
Socket socket=new Socket ("localhoast',8088);
ip=InetAddress.getLocalHost();
String localip=ip.getHostAddress();
System.out.println(localip);
String name=ip.getHostName();
System.out.println(name);
}
catch(Exception e){

}
public void start(){
try{
Run r2=new Run();
Thread t1=new Thread(r2);
t1.setDaemon(true);
t1.start();

Scanner sc=new Scanner(System.in);
OutputStream os=socket.getOutputStream();
OutputStreamWriter osw=new OutputStreamWriter(os);
PrintWriter writer=new PrintWriter(osw,true);

while(true){
writer.println(sc.nextLine());
}
}catch(Exception e){

}

}
public static void main(String args[]){
Client client=new Client();
client.start();
}
class Run implements Runnable{
public void run() {
while(true){
try {
InputStream is=socket.getInputStream();
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br=new BufferedReader(isr);
while(true){
String str=br.readLine();
System.out.println("伺服器說:"+str);
if("bye".equals(str)){
System.out.println("再見客戶端");
System.out.println("聊天結束");

}
}
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

}
}
}

9. java主要是做什麼的

給大家簡單介紹一下Java的三大就業方向。

1、Web開發

Web開發語言很多,Java是其中之一。Java在開發高訪問、高並發、集群化的大型網站方面有很大的優勢,例如人人網、去哪兒網、美團等。

2、Android開發

Android是全球最大的智能手機操作系統,根據Strategy Analytics研究報告顯示,全球智能手機出貨量在2016年第三季度達到3.75億台。Android操作系統獲得了創紀錄的88%全球市場份額,擠壓了蘋果iOS和其他平台。Android應用的主要開發語言就是Java。

Android 從2010年才開始走入大眾視野,雖然最近幾年發展非常快速,但人才積累卻沒有跟上,優秀的Android開發工程師仍然存在不小的缺口,這也是導致Android開發人員工資高,難招人的原因。

3、客戶端開發

Java客戶端開發主要面向政府、事業單位和大型企業,如醫療、學校、OA、郵箱、投票、金融、考試、物流、礦山等信息方面的系統。

但是客戶端開發往往不是這些企業的主要業務,而是為主要業務提供輔助,以便企業能夠更加高效的運營,因此必然不是企業的主要部門。雖然待遇可能和前面兩者差不多,但是前景卻不看好,企業沒有精心打磨這些產品並推向市場的動力,都是內部員工使用,能用就好。

如果想入行Java開發行業,卻苦於自己沒有基礎,擔心自己學不會,可以選擇專業的學習,一般學習費用在2W左右,也有線上的相關學習。Java學習可以從基礎開始,零基礎學習並不可怕,一般4-6個左右的時間,只要你肯努力,一切都不是事。

10. 什麼是JAVA開發

Java開發主要是利用Java編程語言,來編寫程序,實現某些需求。
Java是一門面向對象編程語言,自1995年發布到現在已風靡全球20餘年。Java作為半編譯語言,目前為中國市場運用最普及的開發語言,Java已經形成了一個生態常鏈,目前暫時沒有其他語言可以代替Java的市場佔有率。
Java具有簡單性、面向對象、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點。可以編寫桌面應用程序、Web 應用程序、分布式系統和嵌入式系統應用程序等。
在所有軟體開發類人才的需求中,對 Java工程師的需求達到全部需求量的60%-70%。Java工程師人才缺口大,根據IDC的統計數字:我國Java人才的缺口已達42.5萬,並且以每年20%左右的速度增長。Java工程師就業職業廣泛,發展空間大,薪水相對較高,通常來說,具有3-5年開發經驗的工程師,擁有年薪20萬元是很正常的一個薪酬水平。

閱讀全文

與java客戶端編程相關的資料

熱點內容
貴陽螺桿壓縮冷凝機組組成 瀏覽:115
掃描製作pdf 瀏覽:515
2016奇駿車機如何安裝app 瀏覽:764
phpvc9x64 瀏覽:73
蜜語星球解壓 瀏覽:476
c語言編譯器怎麼打不開 瀏覽:818
海印程序員 瀏覽:648
為什麼華為手機找不到伺服器 瀏覽:664
pdf增減 瀏覽:608
雲伺服器怎麼公網架設網站 瀏覽:91
pythonrequests慢 瀏覽:140
excel保存沒有pdf 瀏覽:922
冰箱壓縮機管囗示意圖 瀏覽:497
許振民編譯局 瀏覽:625
雙網路加什麼伺服器好用 瀏覽:211
linux命令中文 瀏覽:839
python怎麼做物聯網 瀏覽:731
app有什麼推薦嗎 瀏覽:79
自學程序員能不能面試工作 瀏覽:879
有錢人的解壓方法 瀏覽:84