java中寫客戶端代碼 java中寫客戶端代碼的軟件

求用java寫一個(gè)ftp服務(wù)器客戶端程序。

import java.io.*;

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),紅崗企業(yè)網(wǎng)站建設(shè),紅崗品牌網(wǎng)站建設(shè),網(wǎng)站定制,紅崗網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,紅崗網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

import java.net.*;public class ftpServer extends Thread{ public static void main(String args[]){

String initDir;

initDir = "D:/Ftp";

ServerSocket server;

Socket socket;

String s;

String user;

String password;

user = "root";

password = "123456";

try{

System.out.println("MYFTP服務(wù)器啟動(dòng)....");

System.out.println("正在等待連接....");

//監(jiān)聽21號(hào)端口

server = new ServerSocket(21);

socket = server.accept();

System.out.println("連接成功");

System.out.println("**********************************");

System.out.println("");

InputStream in =socket.getInputStream();

OutputStream out = socket.getOutputStream();

DataInputStream din = new DataInputStream(in);

DataOutputStream dout=new DataOutputStream(out);

System.out.println("請等待驗(yàn)證客戶信息....");

while(true){

s = din.readUTF();

if(s.trim().equals("LOGIN "+user)){

s = "請輸入密碼:";

dout.writeUTF(s);

s = din.readUTF();

if(s.trim().equals(password)){

s = "連接成功。";

dout.writeUTF(s);

break;

}

else{s ="密碼錯(cuò)誤,請重新輸入用戶名:";br dout.writeUTF(s);br br }

}

else{

s = "您輸入的命令不正確或此用戶不存在,請重新輸入:";

dout.writeUTF(s);

}

}

System.out.println("驗(yàn)證客戶信息完畢...."); while(true){

System.out.println("");

System.out.println("");

s = din.readUTF();

if(s.trim().equals("DIR")){

String output = "";

File file = new File(initDir);

String[] dirStructure = new String[10];

dirStructure= file.list();

for(int i=0;idirStructure.length;i++){

output +=dirStructure[i]+"\n";

}

s=output;

dout.writeUTF(s);

}

else if(s.startsWith("GET")){

s = s.substring(3);

s = s.trim();

File file = new File(initDir);

String[] dirStructure = new String[10];

dirStructure= file.list();

String e= s;

int i=0;

s ="不存在";

while(true){

if(e.equals(dirStructure[i])){

s="存在";

dout.writeUTF(s);

RandomAccessFile outFile = new RandomAccessFile(initDir+"/"+e,"r");

byte byteBuffer[]= new byte[1024];

int amount;

while((amount = outFile.read(byteBuffer)) != -1){

dout.write(byteBuffer, 0, amount);break;

}break;

}

else if(idirStructure.length-1){

i++;

}

else{

dout.writeUTF(s);

break;

}

}

}

else if(s.startsWith("PUT")){

s = s.substring(3);

s = s.trim();

RandomAccessFile inFile = new RandomAccessFile(initDir+"/"+s,"rw");

byte byteBuffer[] = new byte[1024];

int amount;

while((amount =din.read(byteBuffer) )!= -1){

inFile.write(byteBuffer, 0, amount);break;

}

}

else if(s.trim().equals("BYE"))break;

else{

s = "您輸入的命令不正確或此用戶不存在,請重新輸入:";

dout.writeUTF(s);

}

}

din.close();

dout.close();

in.close();

out.close();

socket.close();

}

catch(Exception e){

System.out.println("MYFTP關(guān)閉!"+e);

}

}}

怎么用java編寫簡單客戶端程序

我這里有一個(gè)例子希望能夠幫助你

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("服務(wù)器說:"+str);

if("bye".equals(str)){

System.out.println("再見客戶端");

System.out.println("聊天結(jié)束");

}

}

} catch (IOException e) {

e.printStackTrace();

} finally{

try {

socket.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

}

}

java寫tcp客戶端測試類該怎么寫

1.TCP服務(wù)端的程序編寫

package test;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.ServerSocket;

import java.net.Socket;

public class MyTcp{

private BufferedReader reader;

private ServerSocket serverSocket;

private Socket socket;

/**

* 創(chuàng)建服務(wù)端的程序,讀取客戶端傳來的數(shù)據(jù)

*/

void getserver(){

try {

serverSocket = new ServerSocket(8998); //實(shí)例化服務(wù)端socket

System.out.println("服務(wù)器套接字已經(jīng)創(chuàng)建成功");

while (true) {

System.out.println("等待客戶機(jī)的連接:");

socket = serverSocket.accept(); //實(shí)例化socket對象

reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); //實(shí)例化BufferReader對象

getClientMessage();

}

} catch (Exception e) {

e.printStackTrace();

}

}

private void getClientMessage() {

try {

while (true) {

System.out.println("客戶機(jī)傳來的信息是:"+reader.readLine());

}

} catch (Exception e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

MyTcp myTcp = new MyTcp(); //創(chuàng)建本類對象

myTcp.getserver();

}

}

2.TCP客戶端程序編寫

package test;

import java.awt.BorderLayout;

import java.awt.Container;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.PrintWriter;

import java.net.Socket;

import java.nio.channels.WritableByteChannel;

import javax.swing.JFrame;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.JTextField;

import javax.swing.border.BevelBorder;

public class MyTcpClient extends JFrame{

private PrintWriter printWriter;

Socket socket;

private JTextField jTextField = new JTextField();

private JTextArea jTextArea = new JTextArea();

Container container;

/**

* 創(chuàng)建的Tcp客戶端程序

*/

public MyTcpClient (String title) {

super(title);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

container = this.getContentPane();

final JScrollPane jScrollPane = new JScrollPane();

jScrollPane.setBorder(new BevelBorder(BevelBorder.RAISED)); //顯示邊框

getContentPane().add(jScrollPane,BorderLayout.CENTER);

jScrollPane.setViewportView(jTextArea);

container.add(jTextField,"South"); //將文本框放在窗體下面

jTextField.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

printWriter.println(jTextField.getText()); //將文本框的信息寫入流(為下面的輸出流寫入信息做準(zhǔn)備)

jTextArea.append(jTextField.getText() + "\n");

jTextArea.setSelectionEnd(jTextArea.getText().length());

jTextField.setText(null);

}

});

}

private void connect() {

jTextArea.append("嘗試連接中...\n");

try {

socket = new Socket("127.0.0.1",8998);

printWriter = new PrintWriter(socket.getOutputStream(),true); //將printwriter中的信息流寫入到套接字的輸出流傳送給服務(wù)端

jTextArea.setText("已完成連接\n\n");

} catch (Exception e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

MyTcpClient myTcpClient = new MyTcpClient("向服務(wù)器發(fā)送數(shù)據(jù)");

myTcpClient.setSize(500,200);

myTcpClient.setVisible(true);

myTcpClient.connect();

}

}

3.效果展示

1先將服務(wù)端的程序跑起來

2再將客戶端的程序跑起來

3.客戶端和服務(wù)端進(jìn)行交互

怎么用Java開發(fā)FTP客戶端

摘要

本文解釋了如何利用庫用Java語言編寫FTP客戶端代碼。它比較了FTP庫的一個(gè)完全列表,演示了每個(gè)庫的優(yōu)點(diǎn)和缺點(diǎn),并且?guī)椭鷽Q策者為他們的需要選擇適當(dāng)?shù)膸?。另外,本文闡述了Fa?ade模式如何在取代一個(gè)庫時(shí)改變管理。最后,作者Jean-Pierre Norguet討論并解決了由于缺乏權(quán)威性的說明書引起的一些問題。

讓我們假設(shè)一個(gè)情景:我們要編寫一個(gè)純Java應(yīng)用程序,該程序必須從運(yùn)行FTP服務(wù)器的遠(yuǎn)程計(jì)算機(jī)上下載文件。我們也通過遠(yuǎn)程文件信息,像名字、日期、或者尺寸,來過濾下載。

自己來寫一個(gè)FTP協(xié)議處理,盡管是有可能,并且可能很有趣。但是這樣做也有可能有困難、花費(fèi)長時(shí)間、并且有潛在的風(fēng)險(xiǎn)。既然我們不肯花費(fèi)時(shí)間、精力、或者金錢自己來寫一個(gè)處理器,那我們推薦使用一個(gè)可重用的現(xiàn)有的軟件組件。萬維網(wǎng)上有并且大量的庫可供使用。有了一個(gè)FTP客戶端庫,下載一個(gè)文件用Java語言編寫就像下面一樣簡單:

FTPClient ftpClient = new FTPClient();

ftpClient.connect("", "user01", "pass1234");

ftpClient.download("C:\\Temp\\", "README.txt");

// Eventually other operations here ...

ftpClient.disconnect();

尋找一個(gè)適合我們需要的高質(zhì)量的Java FTP客戶端庫并不像他看起來那么簡單;它可能相當(dāng)困難。要找到一個(gè)Java FTP客戶端庫需要花一些時(shí)間。接著,在我們找到所有的已存在的庫之后,我們選哪個(gè)?每個(gè)庫適合不同的需要。庫在質(zhì)量上是不等的,并且它們的設(shè)計(jì)有本質(zhì)的區(qū)別。每個(gè)提供一套不同的屬性和使用不同類型的行話來描述他們。

因此,計(jì)算和比較FTP客戶端庫證明是困難而且令人迷惑的。重復(fù)使用已存在的組件是一個(gè)值得推薦的過程,但在這個(gè)例子中,啟動(dòng)它也是令人沮喪的。并且這有點(diǎn)羞愧:在選好的一個(gè)好的FTP庫之后,剩下的工作就是例程了。

本文旨在使選擇過程簡短、容易、并且有價(jià)值。我首先列出了所有的FTP客戶端庫。接著,我定義和描述了庫應(yīng)該用某種方式找到的相關(guān)標(biāo)準(zhǔn)的一個(gè)表格。最后,我列出了一個(gè)總瀏覽的矩陣,該矩陣給出了庫間相互比較的過程的快速瀏覽。所有的信息提供了我們作出一個(gè)迅速、可靠、和長期的決定所需的每件事。

使用JDK(Java 開發(fā)工具集)的FTP支持

用于FTP的訪問規(guī)范是用于注釋的請求:959(RFC959)。Sun Microsystems提供了JDK的一個(gè)RFC959執(zhí)行。但是它是內(nèi)部的、非文檔化的、并且不提供任何資源。當(dāng)RFC959在尚未公開時(shí),它實(shí)際上是執(zhí)行RFC1738、URL規(guī)范的一個(gè)公共界面的后終端。如圖1。

圖1. 使用JDK的FTP支持。

RFC1738的一個(gè)執(zhí)行過程在JDK中作為標(biāo)準(zhǔn)給出。它為基本的FTP傳送做一個(gè)可推理的工作。它是公共的、文檔化的、并且提供源代碼。要使用它,我們可編寫下面語句:

URL url = new URL(";type=i");

URLConnection urlc = url.openConnection();

InputStream is = urlc.getInputStream(); // To download

OutputStream os = urlc.getOutputStream(); // To upload

使用JDK的FTP客戶端嚴(yán)格的遵守標(biāo)準(zhǔn)推薦,但它有以下幾個(gè)說明:

它從根本上區(qū)別于第三方的FTP客戶端庫;這些執(zhí)行RFC959而不是RFC1738

RFC959用大多數(shù)的桌面FTP客戶端工具執(zhí)行。許多Java程序員使用這些工具連接到FTP服務(wù)器上。作為一個(gè)嘗試,這些工具及有可能優(yōu)先于類似的RFC959庫。

URL 和URLConnection類只開放用于通訊的流。Sun庫不為構(gòu)造原始的FTP服務(wù)器響應(yīng)成為像String、 File、 RemoteFile、 或者 Calendar之類的更合用的Java對象而提供直接支持。所以我們不得不編寫更多的代碼,只是為了把數(shù)據(jù)寫入一個(gè)文件中或者開始一個(gè)目錄列表。

正像RFC1738的3.2部分解釋的一樣,"最優(yōu)化",F(xiàn)TP URL在每個(gè)操作后要求關(guān)閉(控制)連接。這對于傳送許多小文件是一種浪費(fèi)、并且毫無效率。而且,作了特別限制FTP服務(wù)器可能把會(huì)這樣一個(gè)通訊開銷認(rèn)為一個(gè)是惡毒的網(wǎng)絡(luò)攻擊或者濫用而拒絕提供進(jìn)一步的服務(wù)。

最后,它缺乏幾個(gè)有用的屬性。

由于以上所有或者某種原因,可優(yōu)先使用一個(gè)第三方的庫。下面部分列出了可供選擇的第三方的庫。

見:

文章標(biāo)題:java中寫客戶端代碼 java中寫客戶端代碼的軟件
URL地址:http://muchs.cn/article18/dohoggp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、網(wǎng)站導(dǎo)航、網(wǎng)站收錄、定制網(wǎng)站、商城網(wǎng)站、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)