代碼如下。。。我測試過了。。。。下面兩個類是在同一台機器上進行測試的,先運行Server.java,再運行Client.java
import java.io.*;
import java.net.*;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Server {
public static void main(String[] args) throws Exception{
ServerSocket ss = new ServerSocket(8080);
Socket socket = ss.accept();
BufferedReader in = //獲取客戶端發過來的消息
new BufferedReader(
new InputStreamReader(socket.getInputStream()));
PrintWriter out = //用於向客戶端發送消息
new PrintWriter(
new OutputStreamWriter(
socket.getOutputStream()),true);
while(true){
String message = in.readLine();//讀取消息
if("quit".equals(message))//退出命令
break;
String s[] = message.split("\\s+");
if("dir".equals(s[0])){
File dir = new File(s[1]);
File[] files = dir.listFiles();
//向客戶端發送文件消息
for(File file:files){
Date date = new Date(file.lastModified());
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//日期格式化
FileInputStream is = new FileInputStream(file);
out.println(file.getName()+"\t"+df.format(date)+"\t"+((is.available()+1023)/1024)+"k");
}
out.println("ok");
}
}
socket.close();
in.close();
out.close();
ss.close();
}
}
-------------------------------------------------------------------------------------------------------------
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) throws Exception{
InetAddress add = InetAddress.getByName(null);
Socket socket = new Socket(add,8080);
BufferedReader in = //獲取伺服器端發過來的消息
new BufferedReader(
new InputStreamReader(socket.getInputStream()));
PrintWriter out = //用於向伺服器端發送消息
new PrintWriter(
new OutputStreamWriter(
socket.getOutputStream()),true);
out.println("dir d:/test");
String mes;
while(true){
mes = in.readLine();
if("ok".equals(mes))
break;
System.out.println(mes);
}
out.println("quit");
socket.close();
in.close();
out.close();
}
}
希望能幫到你。。。仍有問題可以追問或者直接HI我。。。
Ⅱ 一個最簡單的java網路編程
你好:Socket s = new Socket("localhost", 6660);//14行
這個的話,你的沒通, 去黑窗口輸入 tenlet 127.0.0.1 6660;看看是否有結果輸出,再就是你別用localhost了,換成實際的127.0.0.1的地址,
Ⅲ 在java網路編程中,客戶端/伺服器怎麼實現不同電腦之間的通信
1、首先兩台電腦和伺服器都在同一個網路中
2、相互之間可以用sokect<--->server
相互進行通信
Ⅳ 如何學習java網路編程 知乎
建議報一個培訓班,都是零基礎入學的,這是網路編程的全部課程,要是感興趣的話可以了解一下:
第一階段
1、計算機操作基礎
2、Office辦公自動化
3、計算機組裝與維護
4、C語言
第二階段
1、SQL Server2005資料庫設計
2、和高級查詢
3、數據結構
4、C#面向對象程序設計
5、HTML5與CSS3開發
6、JavaScript
7、jQuery高級編程
8、PHP開發
第三階段
APP Development
1、JavaScript特效製作
2、jQuery應用開發
3、HTML5與CSS3開發
4、Java面向對象程序設計
第四階段
JAVAWEB Development
1、產品流程應用
2、移動平台界面設計
3、Oracle資料庫開發
4、JavaWeb應用開發
Mobile APP Development
1、實訓一:WEB前端設計與開發
2、實訓二:J2EE項目開發
Ⅳ java網路編程,怎樣在客戶端和伺服器間實現通信。
寫個簡單點的伺服器跟客服端就行了我寫了個很簡單的,只能在一個客戶端跟一個伺服器通信,在控制台輸入下面這個是伺服器import java.io.*;
import java.net.*;
import java.util.Scanner;public class Server
{
public static void main(String[] args)
{
try {
ServerSocket server=new ServerSocket(8888);//定義客戶端的埠號
Socket client=server.accept();//定義一個Socket對象
InputStream is=client.getInputStream();//伺服器接受信息輸入流,也就是接受從伺服器段發送過來的消息
BufferedReader br=new BufferedReader(new InputStreamReader(is));//用bufferedreader包裝下輸入流
OutputStream os=client.getOutputStream();//這是用來給伺服器發送消息的輸出流
PrintStream ps=new PrintStream(os);
Scanner scanner=new Scanner(System.in);//從鍵盤輸入字元串
boolean flag=true;//定義一個死循環,讓伺服器不停的接受從客戶端發送來的字元串
while(flag)
{
String s=br.readLine();//s是從客戶端接受到得字元串
System.out.println(s);
String s2=scanner.nextLine();//s2是寫給客戶端的字元串
ps.println(s2); //給客戶端發送你寫的東西
}
client.close();
} catch (IOException e) {//try 跟catch你不用管,這是用來處理異常的,就是固定格式
e.printStackTrace();
}
}
} 下面是客戶端import java.io.*;
import java.net.*;
import java.util.Scanner;public class Client
{ public static void main(String[] args)
{
try
{
Socket client=new Socket("192.168.--.--",8888);//IP地址是個字元串,埠號是個整數,這個埠號要跟前面你寫的那個一樣,還有IP地址,寫你的機器的IP地址
InputStream is=client.getInputStream();//這邊的兩個流跟上面伺服器的差不多的作用
BufferedReader bf=new BufferedReader(new InputStreamReader(is));
OutputStream os=client.getOutputStream();
PrintStream ps=new PrintStream(os);
Scanner scanner=new Scanner(System.in);
boolean flag=true;
while(flag)//這句話可以讓客戶端不停的說話
{
String s2=scanner.nextLine();
ps.println(s2);
String s=bf.readLine();
System.out.println(s); }
client.close();
}
catch (UnknownHostException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
} }}
Ⅵ java中如何用網路編程實現登陸功能
privatevoidpostData(Stringurl,Stringdata)throwsException{
URLurl=newURL(url);
URLConnectionurlConnection=url.openConnection();
urlConnection.setDoOutput(true);
//提交數據
try(PrintWriterpw=newPrintWriter(urlConnection.getOutputStream(),true)){
pw.write(data);
}
//獲得返回結果
try(BufferedReaderbr=newBufferedReader(
newInputStreamReader(urlConnection.getInputStream(),"UTF-8"))){
Stringline;
while((line=br.readLine())!=null){
System.out.println(line);
}
}
}
這是當初我登錄我們學校校園網的代碼(基於 JDK7),參數 url 是你登錄的起始網址(就是讓你輸入用戶名和密碼的那個,參數 data 是要提交的數據,就是形如 username=xxx&password=yyy&action=login&... 這樣的格式。
你可以自己先使用瀏覽器通過「審查元素」,然後再控制台看一下登錄的時候到底需要提交哪些欄位。
Ⅶ 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");
}
}
Ⅷ 淺談Java中如何利用socket進行網路編程(一)
Socket是網路上運行的兩個程序間雙向通訊的一端,它既可以接受請求,也可以發送請求,利用它可以較為方便的編寫網路上的數據的傳遞。在java中,有專門的socket類來處理用戶的請求和響應。利用SOCKET類的方法,就可以實現兩台計算機之間的通訊。這里就介紹一下在JAVA中如何利用socket進行網路編程。 在Java中Socket可以理解為客戶端或者伺服器端的一個特殊的對象,這個對象有兩個關鍵的方法,一個是getInputStream方法,另一個是getOutputStream方法。getInputStream方法可以得到一個輸入流,客戶端的Socket對象上的getInputStream方法得到的輸入流其實就是從伺服器端發回的數據流。GetOutputStream方法得到一個輸出流,客戶端Socket對象上的getOutputStream方法返回的輸出流就是將要發送到伺服器端的數據流,(其實是一個緩沖區,暫時存儲將要發送過去的數據)。 程序可以對這些數據流根據需要進行進一步的封裝。本文的例子就對這些數據流進行了一定的封裝(關於封裝可以參考Java中流的實現部分)。 一、建立伺服器類 Java中有一個專門用來建立Socket伺服器的類,名叫ServerSocket,可以用伺服器需要使用的埠號作為參數來創建伺服器對象。ServerSocket server = new ServerSocket(9998) 這條語句創建了一個伺服器對象,這個伺服器使用9998號埠。當一個客戶端程序建立一個Socket連接,所連接的埠號為9998時,伺服器對象server便響應這個連接,並且server.accept()方法會創建一個Socket對象。伺服器端便可以利用這個Socket對象與客戶進行通訊。Socket incoming = server.accept() 進而得到輸入流和輸出流,並進行封裝BufferedReader in = new BufferedReader(new InputStreamReader(incoming.getInputStream())); PrintWriter out = new PrintWriter(incoming.getOutputStream(),true); 隨後,就可以使用in.readLine()方法得到客戶端的輸入,也可以使用out.println()方法向客戶端發送數據。從而可以根據程序的需要對客戶端的不同請求進行回應。
Ⅸ java網路編程的基本內容有哪些其特點和優勢如何請進行論述。
1.用Java編寫網路程序是非常簡單的——至少比在現有其他編程環境下要簡單得多。本書的新版本帶給開發者的是Java發展的最新特性。一旦開始使用Java的網路API進行網路編程,我們能做到可以想像到的一切事情。 本書對開發網路程序進行了非常完整的介紹(從應用程序和applet兩方面),它包括了從網路基礎到遠程方法調用(RMI)的所有內容。本書的章節涵蓋了TCP和UDP套接字、組播、內容和協議處理器以及兩個新的API:JSSE(SSL實現)和JavaMail API。擴充了I/O和多線程等基礎知識。還講述了在不直接編寫網路代碼時你所能夠實現的內容,例如如何用URL實現自己的目標、applet的基本功能以及如何用Swing處理HTML。無論是有經驗的網路程序員還是只想隨意看一看的初學者,都會發現本書對於Java的網路程序類的學習是相當完整的。本書內容涵蓋了:1、Java 2(JDK 1.2和1.3)和Java1.1。2、許多完整的程序(可在線獲取)。3、網路編程基礎的所有方面。4、一些高級專題,包括RMI和組播。5、許多重要的API,有JSSE、JavaMail以及Swing中的HTML解析器。Elliotte Rusty Harold是著名的Java網站Cafe Au Lait的作者(http://metalab.unc.e/javafaq),國際知名的計算機專家。他是《Java I/O》以及其他一些Java和XML技術圖書的作者。 「直到找到這本書之後,我才開始真正理解Java網路編程。」——Bruce Eckel,《Java編程思想》的作者.
2.JAVA的特點§ 1.2 Java的特點
Java是一個廣泛使用的網路編程語言 ,它是一種新的計算概念。
首先 ,作為一種程序設計語言 ,它簡單、面向對象、不依賴於機器的結構、
具有可移植性、魯棒性、安全性、並且提供了並發的機制、具有很高的性能。其
次 ,它最大限度地利用了網路 ,Java的小應用程序 (applet)可在網路上傳輸而
不受 CPU和環境的限制。另外 ,Java還提供了豐富的類庫 ,使程序設計者可以很
方便地建立自己的系統。
下面我們分別從這三個方面來討論 Java的特點 ,然後通過把 Java與 C,
C++相比進一步指出它所具有的優點。
一、 Java語言
Java語言有下面一些特點 :簡單、面向對象、分布式、解釋執行、魯棒、
安全、體系結構中立、可移植、高性能、多線程以及動態性。
:1.簡單性
Java語言是一種面向對象的語言 ,它通過提供最基本的方法來完成指定的
任務 ,只需理解一些基本的概念 ,就可以用它編寫出適合於各種情況的應用程
序。 Java略去了運算符重載、多重繼承等模糊的概念 ,並且通過實現自動垃圾
收集大大簡化了程序設計者的內存管理工作。另外 ,Java也適合於在小型機上運
行 ,它的基本解釋器及類的支持只有 40KB左右 ,加上標准類庫和線程的支持也
只有 215KB左右。庫和線程的支持也只有 215KB左右。
2.面向對象
Java語言的設計集中於對象及其介面 ,它提供了簡單的類機制以及動態的
介面模型。對象中封裝了它的狀態變數以及相應的方法 ,實現了模塊化和信息
隱藏 ;而類則提供了一類對象的原型 ,並且通過繼承機制 ,子類可以使用父類
所提供的方法 ,實現了代碼的復用。
3.分布性
Java是面向網路的語言。通過它提供的類庫可以處理 TCP/IP協議 ,用戶
可以通過 URL地址在網路上很方便地訪問其它對象。
4.魯棒性
Java在編譯和運行程序時 ,都要對可能出現的問題進行檢查 ,以消除錯誤
的產生。它提供自動垃圾收集來進行內存管理 ,防止程序員在管理內存時容易
產生的錯誤。通過集成的面向對象的例外處理機制 ,在編譯時,Java提示出可能
出現但未被處理的例外 ,幫助程序員正確地進行選擇以防止系統的崩潰。另外,
Java在編譯時還可捕獲類型聲明中的許多常見錯誤 ,防止動態運行時不匹配問題
的出現。
5.安全性
用於網路、分布環境下的 Java必須要防止病毒的入侵。 Java不支持指針,
一切對內存的訪問都必須通過對象的實例變數來實現 ,這樣就防止程序員使用
"特洛伊 "木馬等欺騙手段訪問對象的私有成員 ,同時也避免了指針操作中容易
產生的錯誤。
6.體系結構中立
Java解釋器生成與體系結構無關的位元組碼指令 ,只要安裝了 Java運行時
系統 ,Java程序就可在任意的處理器上運行。這些位元組碼指令對應於 Java虛擬
機中的表示 ,Java解釋器得到位元組碼後 ,對它進行轉換 ,使之能夠在不同的平
台運行。
7.可移植性
與平台無關的特性使 Java程序可以方便地被移植到網路上的不同機器。
同時 ,Java的類庫中也實現了與不同平台的介面 ,使這些類庫可以移植。另外,
Java編譯器是由 Java語言實現的 ,Java運行時系統由標准 C實現 ,這使得Java
系統本身也具有可移植性。
8.解釋執行
Java解釋器直接對 Java位元組碼進行解釋執行。位元組碼本身攜帶了許多
編譯時信息 ,使得連接過程更加簡單。
9.高性能
和其它解釋執行的語言如 BASIC、 TCL不同 ,Java位元組碼的設計使之能
很容易地直接轉換成對應於特定CPU的機器碼 ,從而得到較高的性能。
10.多線程
多線程機制使應用程序能夠並行執行 ,而且同步機制保證了對共享數據
的正確操作。通過使用 多線程 ,程序設計者可以分別用不同的線程完成特定
的行為 ,而不需要採用全局的事件循環機制 ,這樣就很容易地實現網路上的實
時交互行為。
11.動態性
Java的設計使它適合於一個不斷發展的環境。在類庫中可以自由地加入
新的方法和實例變數而不會影響用戶程序的執行。並且 Java通過介面來支持
多重繼承 ,使之比嚴格的類繼承具有更靈活的方式和擴展性。
參考資料:http://chat.xwsy.com/wangshangjiaocheng/java/Java.htm
3.Java已用動態的交互應用軟體使Web栩栩如生。它使開發人員
具有『編寫一次到處運行TM」的巨大能力。而且,藉助其JavaAPI
及其編程語言上的Java虛擬機,它已產生一種分布信息的嶄新模式。
這種模式叫做Java企業計算,正在幫助各企業以各種不同的方法取
得競爭優勢。網管和控制已大大簡化。軟體分配基本上是免費的,
而且立即可實現。電子貿易已獲得。佔有成本大幅度降低。信息和
應用軟體到處可存取。
Java建立在簡單的前提基礎上,即所有微處理器都應講同一種
語言——所有內部採用晶元的產品都應能一起工作,無縫而方便地
共享信息。它已經改變企業和個人同Internet大交道的方式。現在,
它正在對消費類產品產生明顯的影響,而且從總體上更加深刻地影
響企業計算。
藉助Java,您可自由自在地使用您已擁有的硬體和軟體。這是因
為Java是獨立於平台的。它還可使您超越企業計算,使應用軟體在便
攜式計算機、信息亭、電視、蜂窩電話和其他大量設備上運行。
全世界的公司都已發現Java數不勝數的用途。所有用途可從其無
可比擬的能力,即提高可靠性、安全性和簡化各種不同計算產品和
環境的能力中受益非淺,而且節省的時間和費用十分可觀。
Java無處不在。它已擁有幾百萬個用戶,其發展速度要快於在它
以前的其他任何一種計算機產品。它可位於任何地方,而且能到處運
行。Java正在迅速被用做傳播信息的事實上標准,這是因為它既可給
企業,也可給最終用戶帶來似乎數不清的好處。
Ⅹ java網路編程 實現極簡單的聊天功能
在同一區域網環境是 應該是可以的! 程序裡面只要將Beijing.java里的IP地址改為Shanghai這台機器的地址 ,Shanghai.java里的IP地址改為Beijing這台機器的地址,應該就OK