『壹』 用FTP上傳時候,出現sockter error是什麼原因
1、虛擬內存太小或者C盤滿了。如果是這種,請自己查資料加大虛擬內存量,並保證C盤還有充足的空間。
2、是你電腦裡面某個軟體的問題。
這個錯誤可能是你計算機的Socket句柄資源用盡導致的,能夠造成這種現象的一種情況就是你的計算機的某個程序不斷的向某個連接發出連接申請,但是始終沒能連上,沒連上就會引發一個錯誤,如果編程的人沒有寫釋放資源的代碼,那麼這個連接就始終占據著著一個句柄,於是由於不斷的連接,最終導致Socket句柄資源耗盡。
如果你運行的都是很正常的程序,那麼很可能進行連接的就是一些木馬程序,比如盜取密碼的程序需要將盜取的密碼發送到某台機器上等等。如果殺毒沒殺到,就裝個防火牆看看,追求乾脆的話就重新安裝系統。
3、注冊表中的以下二項出現錯誤
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Winsock
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Winsock2
解決辦法:備份,然後找一台相同系統的機器,將以下注冊表分支導出存為二個文件,
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Winsock
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Winsock2
最後將這二個導出的注冊表文件導入到有問題的機器中即可。
以上~
『貳』 java怎麼通過遠程讀取流的方式將遠程文件放到本地 急急急!! 謝謝啦
你說的遠程是Web伺服器么?如果是Web伺服器就用URLConnection,前提是知道遠程文件的URL地址;如果是CS架構的服務就用Socket編程,前提是知道IP地址和服務埠以及請求的通訊報文格式。其他還有FTP服務等,情況不一樣的。你需要把問題具體化。
『叄』 用java做一個ftp,需要用socket編程方法寫,大致過程是什麼樣的
socket只是基礎,還得清楚FTP的各種命令、多線程等。。。。。。。。。
『肆』 C++ 實現 多媒體+網路編程,實現在線看視屏,或聽音樂的功能
《Visual C++網路編程經典案例詳解》由淺入深、循序漸進地向讀者介紹了Visual C++網路編程的基礎知識,並且在此基礎上講解了常見的Visual C++網路編程技術及典型應用案例,最終使讀者從根本上提高自身的編程水平,能夠獨立開發網路應用程序。《Visual C++網路編程經典案例詳解》內容包括網路編程基礎知識、Socket套接字編程基礎、多線程技術、FTP瀏覽器實常式序、網頁瀏覽器實常式序、網路通信器、郵件收發器、實用播放器、網路文件傳輸器、P2P網路播放器、Q版聊天軟體的實現、串口通信技術等。《Visual C++網路編程經典案例詳解》最後專門講解了如何用Visual C++實現發送手機簡訊的案例,其中具體講解了串口通信編程的實現方法、所需要的硬體設備以及數據封裝等知識。
《Visual C++網路編程經典案例詳解》配套光碟中提供了作者專門為《Visual C++網路編程經典案例詳解》錄制的多媒體語音教學視頻和《Visual C++網路編程經典案例詳解》所涉及的源代碼,這些源代碼都經過精心調試,在Windows XP和Windows 2003下測試通過。
《Visual C++網路編程經典案例詳解》適合廣大用Visual C++進行網路程序開發的人員和想進一步提升網路編程水平的人員閱讀,尤其適合具有一定C語言基礎和C++語言基礎的人員或大中專院校的學生閱讀。
『伍』 自學網路編程需要學習哪些東西先從哪開始下手
就我個人理解,編程其實可以應用於兩個方面,一個是編寫安裝用的軟體,一個是編寫網站程序。其實兩者可以使用的語言可以對應,並且可以相互融合。對應如下:VB腳本----ASPC#----.NET(後綴.aspx)perl與delphi----PHPjava----JSP 首先,你要找准自己的發展方向,准備學習哪一門編程語言。如果自己精力足夠,可以學習多種。在實際運用開發中,語言不在於學的多,而在於精通某種開發語言。 asp,.net作為微軟推出的編程語言,後者正逐漸應用流行著,相對ASP難度較高。 jsp在web領域的應用廣泛,用於開發大型門戶網站,相對成本較高,有較好的發展前景。 PHP開源,跨平台,應用於許多中小型網站,如:PPS,土豆,電驢等,需求量比較大,前景廣闊。 自己找到學習教材後,做比較系統的學習,花費的時間較少,能取得較好的效果。在學習過程中,不要輕言放棄,編程這個東西對於很多人是枯燥的,要對它產生興趣,付出努力,持之以恆的學習下去。
『陸』 FTP中NLST命令顯示中文亂碼解決辦法
這個沒有任何辦法解決,請修改所有文件夾為中文。
為什麼現在已經沒有純中文內核的操作系統出現,編程軟體出現
就是因為中文在計算機里並不是默認字元,一個中文占據2個byte位置。。而英文是一個。
再加上中文編碼都是2,3種(GB2312 BIG5等)
所以所有編程 計算機內部語言,幾乎都用英文。
『柒』 http和socket通信的區別
其實這樣比是有問題的,http實際上是一種應用級協議,常用的是http1.0和http 1.1協議。而socket則是一個連接,它直接在鏈路層上進行連接。在該連接的基礎之可以實現各種應用級協議。如通過socket可以實現ftp協議、http、https、NetBIOS、Win、Iron等等,甚至於可以實現藍牙(藍牙連接在.net中不被支持,是因為socket所需參數的協議簇中枚舉中沒有藍牙,但可以直接通過數據,實現與藍牙的通信)。所以http是一個協議與Socket連接是沒有可比性的,在.net中,可實現http協議的連接。
正是因為socket功能的強大,所以對於socket編程一般用於特殊一點的協議或高性能網路要求的情況下才使用這種編程。如果是一般的tcp/ip,在.net中已經實現了其功能封裝。例如WebClient實現http/https,再如.net 4.5新增的HttpClient也可以實現同的功能。但這些功能較為狹窄,那麼在.net中的可插入協議是一個中庸的選擇。目前實現的有HttpWebRequest/FtpWebRequest。並且可繼承WebRequest實現自己的可插入協議。
也就是說,如果我們與httpClient或WebClient與Scoket相比的話,WebClinet/HttpClient是實現特定功能的Socket封裝,它減少開發周期,但底層還是Socket。如果WebRequest與Socket相比的話,WebRequest是實現特定協議的Socket封閉,並可實現可插入協議。換句來說,WebClient是完完全全的一個通信類,而WebRequest則算是一個協議開發類(它已經實現了FtpWebRequest及HttpWebRequest),而Socket則是底層開發。
『捌』 如何使用java socket來傳輸自定義的數據包
以下分四點進行描述:
1,什麼是Socket
網路上的兩個程序通過一個雙向的通訊連接實現數據的交換,這個雙向鏈路的一端稱為一個Socket。Socket通常用來實現客戶方和服務方的連接。Socket是TCP/IP協議的一個十分流行的編程界面,一個Socket由一個IP地址和一個埠號唯一確定。
但是,Socket所支持的協議種類也不光TCP/IP一種,因此兩者之間是沒有必然聯系的。在Java環境下,Socket編程主要是指基於TCP/IP協議的網路編程。
2,Socket通訊的過程
Server端Listen(監聽)某個埠是否有連接請求,Client端向Server 端發出Connect(連接)請求,Server端向Client端發回Accept(接受)消息。一個連接就建立起來了。Server端和Client 端都可以通過Send,Write等方法與對方通信。
對於一個功能齊全的Socket,都要包含以下基本結構,其工作過程包含以下四個基本的步驟:
(1) 創建Socket;
(2) 打開連接到Socket的輸入/出流;
(3) 按照一定的協議對Socket進行讀/寫操作;
(4) 關閉Socket.(在實際應用中,並未使用到顯示的close,雖然很多文章都推薦如此,不過在我的程序中,可能因為程序本身比較簡單,要求不高,所以並未造成什麼影響。)
3,創建Socket
創建Socket
java在包java.net中提供了兩個類Socket和ServerSocket,分別用來表示雙向連接的客戶端和服務端。這是兩個封裝得非常好的類,使用很方便。其構造方法如下:
Socket(InetAddress address, int port);
Socket(InetAddress address, int port, boolean stream);
Socket(String host, int prot);
Socket(String host, int prot, boolean stream);
Socket(SocketImpl impl)
Socket(String host, int port, InetAddress localAddr, int localPort)
Socket(InetAddress address, int port, InetAddress localAddr, int localPort)
ServerSocket(int port);
ServerSocket(int port, int backlog);
ServerSocket(int port, int backlog, InetAddress bindAddr)
其中address、host和port分別是雙向連接中另一方的IP地址、主機名和端 口號,stream指明socket是流socket還是數據報socket,localPort表示本地主機的埠號,localAddr和 bindAddr是本地機器的地址(ServerSocket的主機地址),impl是socket的父類,既可以用來創建serverSocket又可 以用來創建Socket。count則表示服務端所能支持的最大連接數。例如:學習視頻網 http://www.xxspw.com
Socket client = new Socket("127.0.01.", 80);
ServerSocket server = new ServerSocket(80);
注意,在選擇埠時,必須小心。每一個埠提供一種特定的服務,只有給出正確的埠,才 能獲得相應的服務。0~1023的埠號為系統所保留,例如http服務的埠號為80,telnet服務的埠號為21,ftp服務的埠號為23, 所以我們在選擇埠號時,最好選擇一個大於1023的數以防止發生沖突。
在創建socket時如果發生錯誤,將產生IOException,在程序中必須對之作出處理。所以在創建Socket或ServerSocket是必須捕獲或拋出例外。
4,簡單的Client/Server程序
1. 客戶端程序
import java.io.*;
import java.net.*;
public class TalkClient {
public static void main(String args[]) {
try{
Socket socket=new Socket("127.0.0.1",4700);
//向本機的4700埠發出客戶請求
BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
//由系統標准輸入設備構造BufferedReader對象
PrintWriter os=new PrintWriter(socket.getOutputStream());
//由Socket對象得到輸出流,並構造PrintWriter對象
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//由Socket對象得到輸入流,並構造相應的BufferedReader對象
String readline;
readline=sin.readLine(); //從系統標准輸入讀入一字元串
while(!readline.equals("bye")){
//若從標准輸入讀入的字元串為 "bye"則停止循環
os.println(readline);
//將從系統標准輸入讀入的字元串輸出到Server
os.flush();
//刷新輸出流,使Server馬上收到該字元串
System.out.println("Client:"+readline);
//在系統標准輸出上列印讀入的字元串
System.out.println("Server:"+is.readLine());
//從Server讀入一字元串,並列印到標准輸出上
readline=sin.readLine(); //從系統標准輸入讀入一字元串
} //繼續循環
os.close(); //關閉Socket輸出流
is.close(); //關閉Socket輸入流
socket.close(); //關閉Socket
}catch(Exception e) {
System.out.println("Error"+e); //出錯,則列印出錯信息
}
}
}
2. 伺服器端程序
import java.io.*;
import java.net.*;
import java.applet.Applet;
public class TalkServer{
public static void main(String args[]) {
try{
ServerSocket server=null;
try{
server=new ServerSocket(4700);
//創建一個ServerSocket在埠4700監聽客戶請求
}catch(Exception e) {
System.out.println("can not listen to:"+e);
//出錯,列印出錯信息
}
Socket socket=null;
try{
socket=server.accept();
//使用accept()阻塞等待客戶請求,有客戶
//請求到來則產生一個Socket對象,並繼續執行
}catch(Exception e) {
System.out.println("Error."+e);
//出錯,列印出錯信息
}
String line;
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//由Socket對象得到輸入流,並構造相應的BufferedReader對象
PrintWriter os=newPrintWriter(socket.getOutputStream());
//由Socket對象得到輸出流,並構造PrintWriter對象
BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
//由系統標准輸入設備構造BufferedReader對象
System.out.println("Client:"+is.readLine());
//在標准輸出上列印從客戶端讀入的字元串
line=sin.readLine();
//從標准輸入讀入一字元串
while(!line.equals("bye")){
//如果該字元串為 "bye",則停止循環
os.println(line);
//向客戶端輸出該字元串
os.flush();
//刷新輸出流,使Client馬上收到該字元串
System.out.println("Server:"+line);
//在系統標准輸出上列印讀入的字元串
System.out.println("Client:"+is.readLine());
//從Client讀入一字元串,並列印到標准輸出上
line=sin.readLine();
//從系統標准輸入讀入一字元串
} //繼續循環
os.close(); //關閉Socket輸出流
is.close(); //關閉Socket輸入流
socket.close(); //關閉Socket
server.close(); //關閉ServerSocket
}catch(Exception e){
System.out.println("Error:"+e);
//出錯,列印出錯信息
}
}
}
『玖』 socket編程:FTP協議客戶端 CAsynSocket類的問題
我之前寫過一個示例的FTP伺服器。FTP協議和HTTP協議一樣,都是屬於一問一答的,當你的命令連接與FTP伺服器連接後,就要等待響應伺服器的歡迎信息 220, 然後再發送請求進行登陸,發送完後不要再發送其他命令了,一定要等剛剛的請求響應完成。所以你不要一次性把4個命令全部發送過去。一定要保證一問一答。
『拾』 socket中有哪幾種連接方式區別是什麼
一、埠簡介 隨著計算機網路技術的發展,原來物理上的介面(如鍵盤、滑鼠、網卡、顯示卡等輸入/輸出介面)已不能滿足網路通信的要求,TCP/IP協議作為網路通信的標准協議就解決了這個通信難題。TCP/IP協議集成到操作系統的內核中,這就相當於在操作系統中引入了一種新的輸入/輸出介面技術,因為在TCP/IP協議中引入了一種稱之為Socket(套接字)應用程序介面。有了這樣一種介面技術,一台計算機就可以通過軟體的方式與任何一台具有Socket介面的計算機進行通信。埠在計算機編程上也就是Socket介面。 有了這些埠後,這些埠又是如何工作呢?例如一台伺服器為什麼可以同時是Web伺服器,也可以是FTP伺服器,還可以是郵件伺服器等等呢?其中一個很重要的原因是各種服務採用不同的埠分別提供不同的服務,比如:通常TCP/IP協議規定Web採用80號埠,FTP採用21號埠等,而郵件伺服器是採用25號埠。這樣,通過不同埠,計算機就可以與外界進行互不幹擾的通信。 據專家們分析,伺服器埠數最大可以有65535個,但是實際上常用的埠才幾十個,由此可以看出未定義的埠相當多。這是那麼多黑客程序都可以採用某種方法,定義出一個特殊的埠來達到入侵的目的的原因所在。為了定義出這個埠,就要依靠某種程序在計算機啟動之前自動載入到內存,強行控制計算機打開那個特殊的埠。這個程序就是後門程序,這些後門程序就是常說的木馬程序。簡單的說,這些木馬程序在入侵前是先通過某種手段在一台個人計算機中植入一個程序,打開某個(些)特定的埠,俗稱後門(BackDoor),使這台計算機變成一台開放性極高(用戶擁有極高許可權)的FTP伺服器,然後從後門就可以達到侵入的目的。 二、埠的分類 埠的分類根據其參考對象不同有不同劃分方法,如果從埠的性質來分,通常可以分為以下三類: (1)公認埠(Well Known Ports):這類埠也常稱之為常用埠。這類埠的埠號從0到1024,它們緊密綁定於一些特定的服務。通常這些埠的通信明確表明了某種服務的協議,這種埠是不可再重新定義它的作用對象。例如:80埠實際上總是HTTP通信所使用的,而23號埠則是Telnet服務專用的。這些埠通常不會像木馬這樣的黑客程序利用。為了使大家對這些常用埠多一些認識,在本章後面將詳細把這些埠所對嬗Φ姆?窠?辛斜恚?└魑煥斫夂筒慰肌? (2) 注冊埠(Registered Ports):埠號從1025到49151。它們鬆散地綁定於一些服務。也是說有許多服務綁定於這些埠,這些埠同樣用於許多其他目的。這些埠多數沒有明確的定義服務對象,不同程序可根據實際需要自己定義,如後面要介紹的遠程式控制制軟體和木馬程序中都會有這些埠的定義的。記住這些常見的程序埠在木馬程序的防護和查殺上是非常有必要的。常見木馬所使用的埠在後面將有詳細的列表。 (3) 動態和/或私有埠(Dynamic and/or Private Ports):埠號從49152到65535。理論上,不應把常用服務分配在這些埠上。實際上,有些較為特殊的程序,特別是一些木馬程序就非常喜歡用這些埠,因為這些埠常常不被引起注意,容易隱蔽。 如果根據所提供的服務方式的不同,埠又可分為TCP協議埠和UDP協議埠兩種。因為計算機之間相互通信一般採用這兩種通信協議。前面所介紹的連接方式是一種直接與接收方進行的連接,發送信息以後,可以確認信息是否到達,這種方式大多採用TCP協議;另一種是不是直接與接收方進行連接,只管把信息放在網上發出去,而不管信息是否到達,也就是前面所介紹的無連接方式。這種方式大多採用UDP協議,IP協議也是一種無連接方式。對應使用以上這兩種通信協議的服務所提供的埠,也就分為TCP協議埠和UDP協議埠。 使用TCP協議的常見埠主要有以下幾種: (1) FTP:定義了文件傳輸協議,使用21埠。常說某某計算機開了FTP服務便是啟動了文件傳輸服務。下載文件,上傳主頁,都要用到FTP服務。 (2)Telnet:它是一種用於遠程登陸的埠,用戶可以以自己的身份遠程連接到計算機上,通過這種埠可以提供一種基於DOS模式下的通信服務。如以前的BBS是純字元界面的,支持BBS的伺服器將23埠打開,對外提供服務。 (3)SMTP:定義了簡單郵件傳送協議,現在很多郵件伺服器都用的是這個協議,用於發送郵件。如常見的免費郵件服務中用的就是這個郵件服務埠,所以在電子郵件設置中常看到有這么SMTP埠設置這個欄,伺服器開放的是25號埠