真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java中寫(xiě)客戶(hù)端代碼 java中寫(xiě)客戶(hù)端代碼的軟件

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

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ò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,紅崗網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿(mǎn)足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(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)聽(tīng)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("請(qǐng)等待驗(yàn)證客戶(hù)信息....");

while(true){

s = din.readUTF();

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

s = "請(qǐng)輸入密碼:";

dout.writeUTF(s);

s = din.readUTF();

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

s = "連接成功。";

dout.writeUTF(s);

break;

}

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

}

else{

s = "您輸入的命令不正確或此用戶(hù)不存在,請(qǐng)重新輸入:";

dout.writeUTF(s);

}

}

System.out.println("驗(yàn)證客戶(hù)信息完畢...."); 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 = "您輸入的命令不正確或此用戶(hù)不存在,請(qǐng)重新輸入:";

dout.writeUTF(s);

}

}

din.close();

dout.close();

in.close();

out.close();

socket.close();

}

catch(Exception e){

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

}

}}

怎么用java編寫(xiě)簡(jiǎn)單客戶(hù)端程序

我這里有一個(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ù)器說(shuō):"+str);

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

System.out.println("再見(jiàn)客戶(hù)端");

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

}

}

} catch (IOException e) {

e.printStackTrace();

} finally{

try {

socket.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

}

}

java寫(xiě)tcp客戶(hù)端測(cè)試類(lèi)該怎么寫(xiě)

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

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ù)端的程序,讀取客戶(hù)端傳來(lái)的數(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("等待客戶(hù)機(jī)的連接:");

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

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

getClientMessage();

}

} catch (Exception e) {

e.printStackTrace();

}

}

private void getClientMessage() {

try {

while (true) {

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

}

} catch (Exception e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

MyTcp myTcp = new MyTcp(); //創(chuàng)建本類(lèi)對(duì)象

myTcp.getserver();

}

}

2.TCP客戶(hù)端程序編寫(xiě)

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客戶(hù)端程序

*/

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()); //將文本框的信息寫(xiě)入流(為下面的輸出流寫(xiě)入信息做準(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中的信息流寫(xiě)入到套接字的輸出流傳送給服務(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ù)端的程序跑起來(lái)

2再將客戶(hù)端的程序跑起來(lái)

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

怎么用Java開(kāi)發(fā)FTP客戶(hù)端

摘要

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

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

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

FTPClient ftpClient = new FTPClient();

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

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

// Eventually other operations here ...

ftpClient.disconnect();

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

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

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

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

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

圖1. 使用JDK的FTP支持。

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

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

URLConnection urlc = url.openConnection();

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

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

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

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

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

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

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

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

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

見(jiàn):


新聞標(biāo)題:java中寫(xiě)客戶(hù)端代碼 java中寫(xiě)客戶(hù)端代碼的軟件
本文來(lái)源:http://weahome.cn/article/dohoggp.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部