導航:首頁 > 編程大全 > tcp發送數據工具

tcp發送數據工具

發布時間:2023-02-26 22:36:31

① 網頁通過TCP/IP協議發送數據,怎麼做

TCP/IP這個協議遵守一個四層的模型概念:應用層、傳輸層、互聯層和網路介面層。

網路介面層
模型的基層是網路介面層。負責數據幀的發送和接收,幀是獨立的網路信息傳輸單元。網路介面層將幀放在網上,或從網上把幀取下來。

互聯層
互聯協議將數據包封裝成internet數據報,並運行必要的路由演算法。
這里有四個互聯協議:
網際協議IP:負責在主機和網路之間定址和路由數據包。
地址解析協議ARP:獲得同一物理網路中的硬體主機地址。
網際控制消息協議ICMP:發送消息,並報告有關數據包的傳送錯誤。
互聯組管理協議IGMP:被IP主機拿來向本地多路廣播路由器報告主機組成員。

傳輸層
傳輸協議在計算機之間提供通信會話。傳輸協議的選擇根據數據傳輸方式而定。

兩個傳輸協議:
傳輸控制協議TCP:為應用程序提供可靠的通信連接。適合於一次傳輸大批數據的情況。並適用於要求得到響應的應用程序。
用戶數據報協議UDP:提供了無連接通信,且不對傳送包進行可靠的保證。適合於一次傳輸小量數據,可靠性則由應用層來負責。

應用層
應用程序通過這一層訪問網路。

網路介面技術
IP使用網路設備介面規范NDIS向網路介面層提交幀。IP支持廣域網和本地網介面技術。

串列線路協議
TCP/IPG一般通過internet串列線路協議SLIP或點對點協議PPP在串列線上進行數據傳送。(是不是我們平時把它稱之為非同步通信,對於要拿LINUX提供建立遠程連接的朋友應該多研究一下這方面的知識)?

IP是一個無連接的協議,主要就是負責在主機間定址並為數據包設定路由,在交換數據前它並不建立會話。因為它不保證正確傳遞,另一方面,數據在被收到時,IP不需要收到確認,所以它是不可靠的。有一些欄位,在當數據從傳輸層傳下來時,會被附加在數據包中,我們來看一下這些欄位:
源IP地址:用IP地址確定數據報發送者。
目標IP地址:用IP地址確定數據報目標。
協議:告知目的機的IP是否將包傳給TCP或UDP。
檢查和:一個簡單的數學計算,用來證實收到的包的完整性。
TTL生存有效時間:指定一個數據報被丟棄之前,在網路上能停留多少時間(以秒計)。它避免了包在網路中無休止循環。路由器會根據數據在路由器中駐留的時間來遞減TTL。其中數據報通過一次路由器,TTL至少減少一秒。根據我們前面提到關於ARP的知識,如果IP地址目標為本地地址時,IP將數據包直接傳給那個主機;如果目標地址為遠程地址的話,IP在本地的路由表中查找遠程主機的路由(看來好象我們平時撥114一樣)。如果找到一個路由,IP用它傳送數據包。如果沒找到呢,就會將數據包發送到源主機的預設網關,也稱之為路由器。(很多時候一直在搞網關和路由器的定義,其實我覺得在學的時候不一定死摳概念,現在硬體和軟體結合的產品越來越多了,一時很分清的,只要我們運用的時候可以解決實際問題嘛。)這樣當路由器收到一個包後,該包向上傳給IP:
(1)如果交通阻塞(聽起來蠻可怕的),包在路由器中停滯,TTL至少減1或更多。要是它降到0的話,包就會被拋棄。
(2)如果對於下一網路來說包太大的話,IP會將它分割成若干個小包。
(3)如果包被分解,IP為每個新包製造一個新頭,其中包括:一個標志,用來顯示其它小包在其後;一個小包ID,用來確定所有小包是一起的;一個小包偏移,用來告訴接收主機怎麼重新組合它們。
(4)IP計算一個新的檢驗和。
(5)IP獲取一個路由的目標硬體地址。
(6)IP轉發包。
在下一主機,包被發送到TCP或UDP。每個路由器都要重復該過程。直到包到達最終目的地。當包到達最終目的地後,IP將小包組裝成原來的包。

TCP是一種可靠的面向連接的傳送服務。它在傳送數據時是分段進行的,主機交換數據必須建立一個會話。它用比特流通信,即數據被作為無結構的位元組流。通過每個TCP傳輸的欄位指定順序號,以獲得可靠性。如果一個分段被分解成幾個小段,接收主機會知道是否所有小段都已收到。通過發送應答,用以確認別的主機收到了數據。對於發送的每一個小段,接收主機必須在一個指定的時間返回一個確認。如果發送者未收到確認,數據會被重新發送;如果收到的數據包損壞,接收主機會舍棄它,因為確認未被發送,發送者會重新發送分段。


SOCKETS實用程序使用一個協議埠號來標明自己應用的唯一性。埠可以使用0到65536之間的任何數字。在服務請求時,操作系統動態地為客戶端的應用程序分配埠號。

套接字
套接字在要領上與文件句柄類似,因為其功能是作為網路通信的終結點。一個應用程序通過定義三部分來產生一個套接字:主機IP地址、服務類型(面向連接的服務是TCP,無連接服務是UDP)、應用程序所用的埠。

TCP埠
TCP埠為信息的傳送提供定地點,埠號小於256的定義為常用埠。

TCP的三次握手
TCP對話通過三次握手來初始化。三次握手的目的是使數據段的發送和接收同步;告訴其它主機其一次可接收的數據量,並建立虛連接。我們來看看這三次握手的簡單過程:
(1)初始化主機通過一個同步標志置位的數據段發出會話請求。
(2)接收主機通過發回具有以下項目的數據段表示回復:同步標志置位、即將發送的數據段的起始位元組的順序號、應答並帶有將收到的下一個數據段的位元組順序號。
(3)請求主機再回送一個數據段,並帶有確認順序號和確認號。

TCP滑動窗口
TCP滑動窗口用來暫存兩台主機間要傳送的數據,有點類似CACHE。每個TCP/IP主機有兩個滑動窗口:一個用於接收數據,另一個用於發送數據。

② qt中用tcp發送Qtablewidget中的數據

其實這很簡抄單啊,你只襲要定義一個合理的數據結構就可以了。
你可以定義類似下面這樣一個XML,用於數據發送:

<?xml version="1.0" encoding="UTF-8" ?>
<menu custom_id="用戶的id" date="什麼時候定的" total="總價(其實這個伺服器也能算出來)">
<item id="資料庫中某菜單的id" name="如果有id的話,這個就不需要了" price="和name一個道理" count="用戶點了多少" info="其他信息或要求" />
<item id="" name="" price="" count="" info="" />
<item id="" name="" price="" count="" info="" />
</menu>

在客戶端,你把數據拼裝成這種XML的字元串,然後在用TCP呀HTTP什麼的發送給服務端,
服務端只要解析一下這個XML就可以了。
當然,你也可以使用更合理更好用的數據結構,我這里只是舉個例子。

③ 如何用tcpudp測試工具傳輸文件

劃分為使用TCP埠(面向連接如打電話)和使用UDP埠(無連接如寫信)兩種。網路中可以被命名和定址的通信埠是操作系統的一種可分配資源。由網路OSI(開放系統互聯參考模型,)七層協議可知,傳輸層與網路層最大的區別是傳輸層提供進程通信能力,網路通信的最終地址不僅包括主機地址,還包括可描述進程的某種標識。所以TCP/IP協議提出的協議埠,可以認為是網路通信進程的一種標識符。應用程序(調入內存運行後一般稱為:進程)通過系統調用與某埠建立連接(binding,綁定)後,傳輸層傳給該埠的數據都被相應的進程所接收,相應進程發給傳輸層的數據都從該埠輸出。在TCP/IP協議的實現中,埠操作類似於一般的I/O操作,進程獲取一個埠,相當於獲取本地唯一的I/O文件,可以用一般的讀寫方式訪問類似於文件描述符,每個埠都擁有一個叫埠號的整數描述符,用來區別不同的埠。由於TCP/IP傳輸層的TCP和UDP兩個協議是兩個完全獨立的軟體模塊,因此各自的埠號也相互獨立。如TCP有一個255號埠,UDP也可以有一個255號埠,兩者並不沖突。埠號有兩種基本分配方式:第一種叫全局分配這是一種集中分配方式,由一個公認權威的中央機構根據用戶需要進行統一分配,並將結果公布於眾,第二種是本地分配,又稱動態連接,即進程需要訪問傳輸層服務時,向本地操作系統提出申請,操作系統返回本地唯一的埠號,進程再通過合適的系統調用,將自己和該埠連接起來(binding,綁定)。TCP/IP埠號的分配綜合了以上兩種方式,將埠號分為兩部分,少量的作為保留埠,以全局方式分配給服務進程。每一個標准伺服器都擁有一個全局公認的埠叫周知口,即使在不同的機器上,其埠號也相同。剩餘的為自由埠,以本地方式進行分配。TCP和UDP規定,小於256的埠才能作為保留埠。按埠號可分為3大類:(1)公認埠(WellKnownPorts):從0到1023,它們緊密綁定(binding)於一些服務。通常這些埠的通訊明確表明了某種服務的協議。例如:80埠實際上總是HTTP通訊。(2)注冊埠(RegisteredPorts):從1024到49151。它們鬆散地綁定於一些服務。也就是說有許多服務綁定於這些埠,這些埠同樣用於許多其它目的。例如:許多系統處理動態埠從1024左右開始。(3)動態和/或私有埠(Dynamicand/orPrivatePorts):從49152到65535。理論上,不應為服務分配這些埠。實際上,機器通常從1024起分配動態埠。但也有例外:SUN的RPC埠從32768開始。系統管理員可以"重定向"埠:一種常見的技術是把一個埠重定向到另一個地址。例如默認的HTTP埠是80,不少人將它重定向到另一個埠,如8080。如果是這樣改了,要訪問本文就應改用這個地址.cn:8080。埠漏洞:8080埠可以被各種病毒程序所利用,比如BrownOrifice(BrO)特洛伊木馬病毒可以利用8080埠完全遙控被感染的計算機。另外,RemoConChubo,RingZero木馬也可以利用該埠進行攻擊。操作建議:一般我們是使用80埠進行網頁瀏覽的,為了避免病毒的攻擊,我們可以關閉該埠。埠:21服務:FTP說明:FTP伺服器所開放的埠,用於上傳、下載。最常見的攻擊者用於尋找打開anonymous的FTP伺服器的方法。這些伺服器帶有可讀寫的目錄。木馬DolyTrojan、Fore、InvisibleFTP、WebEx、WinCrash和BladeRunner所開放的埠。埠:22服務:Ssh說明:PcAnywhere建立的TCP和這一埠的連接可能是為了尋找ssh。這一服務有許多弱點,如果配置成特定的模式,許多使用RSAREF庫的版本就會有不少的漏洞存在。埠:23服務:Telnet說明:遠程登錄,入侵者在搜索遠程登錄UNIX的服務。大多數情況下掃描這一埠是為了找到機器運行的操作系統。還有使用其他技術,入侵者也會找到密碼。木馬TinyTelnetServer就開放這個埠。埠:25服務:SMTP說明:SMTP伺服器所開放的埠,用於發送郵件。入侵者尋找SMTP伺服器是為了傳遞他們的SPAM。入侵者的帳戶被關閉,他們需要連接到高帶寬的E-MAIL伺服器上,將簡單的信息傳遞到不同的地址。木馬Antigen、EmailPasswordSender、HaebuCoceda、ShtrilitzStealth、WinPC、WinSpy都開放這個埠。埠:80服務:HTTP說明:用於網頁瀏覽。木馬Executor開放此埠。埠:102服務:Messagetransferagent(MTA)-X.400overTCP/IP說明:消息傳輸代理。埠:109服務:PostOfficeProtocol-Version3說明:POP3伺服器開放此埠,用於接收郵件,客戶端訪問伺服器端的郵件服務。POP3服務有許多公認的弱點。關於用戶名和密碼交換緩沖區溢出的弱點至少有20個,這意味著入侵者可以在真正登陸前進入系統。成功登陸後還有其他緩沖區溢出錯誤。埠:110服務:SUN公司的RPC服務所有埠說明:常見RPC服務有rpc.mountd、NFS、rpc.statd、rpc.csmd、rpc.ttybd、amd等埠:119服務:NetworkNewsTransferProtocol說明:NEWS新聞組傳輸協議,承載USENET通信。這個埠的連接通常是人們在尋找USENET伺服器。多數ISP限制,只有他們的客戶才能訪問他們的新聞組伺服器。打開新聞組伺服器將允許發/讀任何人的帖子,訪問被限制的新聞組伺服器,匿名發帖或發送SPAM。埠:135服務:LocationService說明:Microsoft在這個埠運行DCERPCend-pointmapper為它的DCOM服務。這與UNIX111埠的功能很相似。使用DCOM和RPC的服務利用計算機上的end-pointmapper注冊它們的位置。遠端客戶連接到計算機時,它們查找end-pointmapper找到服務的位置。HACKER掃描計算機的這個埠是為了找到這個計算機上運行ExchangeServer嗎?什麼版本?還有些DOS攻擊直接針對這個埠。埠:137、138、139服務:NETBIOSNameService說明:其中137、138是UDP埠,當通過網上鄰居傳輸文件時用這個埠。而139埠:通過這個埠進入的連接試圖獲得NetBIOS/SMB服務。這個協議被用於windows文件和列印機共享和SAMBA。還有WINSRegisrtation也用它。埠:161服務:SNMP說明:SNMP允許遠程管理設備。所有配置和運行信息的儲存在資料庫中,通過SNMP可獲得這些信息。許多管理員的錯誤配置將被暴露在Internet。Cackers將試圖使用默認的密碼public、private訪問系統。他們可能會試驗所有可能的組合。SNMP包可能會被錯誤的指向用戶的網路埠:177服務:說明:許多入侵者通過它訪問X-windows操作台,它同時需要打開6000埠。埠:389服務:LDAP、ILS說明:輕型目錄訪問協議和共用這一埠。限制埠防非法入侵[分享]一般來說,我們採用一些功能強大的反黑軟體和防火牆來保證我們的系統安全,本文擬用一種簡易的法——通過限制埠來幫助大家防止非法入侵。非法入侵的方式簡單說來,非法入侵的方式可粗略分為4種:1、掃描埠,通過已知的系統Bug攻入主機。2、種植木馬,利用木馬開辟的後門進入主機。3、採用數據溢出的手段,迫使主機提供後門進入主機。4、利用某些軟體設計的漏洞,直接或間接控制主機。非法入侵的主要方式是前兩種,尤其是利用一些流行的黑客工具,通過第一種方式攻擊主機的情況最多、也最普遍;而對後兩種方式來說,只有一些手段高超的黑客才利用,波及面並不廣泛,而且只要這兩種問題一出現,軟體服務商很快就會提供補丁,及時修復系統。對於個人用戶來說,您可以限制所有的埠,因為您根本不必讓您的機器對外提供任何服務;而對於對外提供網路服務的伺服器,我們需把必須利用的埠(比如WWW埠80、FTP埠21、郵件服務埠25、110等)開放,其他的埠則全部關閉。這里,對於採用Windows2000或者WindowsXP的用戶來說,不需要安裝任何其他軟體,可以利用「TCP/IP篩選」功能限制伺服器的埠。具體設置如下:1、右鍵點擊「網上鄰居」,選擇「屬性」,然後雙擊「本地連接」(如果是撥號上網用戶,選擇「我的連接」圖標),彈出「本地連接狀態」對話框。2、點擊[屬性]按鈕,彈出「本地連接屬性」,選擇「此連接使用下列項目」中的「Internet協議(TCP/IP)」,然後點擊[屬性]按鈕。3、在彈出的「Internet協議(TCP/IP)」對話框中點擊[高級]按鈕。在彈出的「高級TCP/IP設置」中,選擇「選項」標簽,選中「TCP/IP篩選」,然後點擊[屬性]按鈕。4、在彈出的「TCP/IP篩選」對話框里選擇「啟用TCP/IP篩選」的復選框,然後把左邊「TCP埠」上的「只允許」選上。這樣,您就可以來自己添加或刪除您的TCP或UDP或IP的各種埠了。添加或者刪除完畢,重新啟動機器以後,您的伺服器就被保護起來了。最後,提醒個人用戶,如果您只上網瀏覽的話,可以不添加任何埠。但是要利用一些網路聯絡工具,比如OICQ的話,就要把「4000」這個埠打開,同理,如果發現某個常用的網路工具不能起作用的時候,請搞清它在您主機所開的埠,然後在「TCP/IP「里把此埠打開以上來源於網路,不過分析得很好了相同點:都處於傳輸層不同點:TCP~面向連接、可靠、傳輸慢、保證數據的順序UDP~面向無連接、不可靠、傳輸快、數據按照不同路徑到,不保證數據順序且兩者傳輸的模式不一樣

④ 如何通過Socket TCP發送並接收一個文件

主要是你通過socket api封裝要發送的數據,內部會自動封裝成數據流進行傳輸。
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)

Socket client = new Socket("127.0.01.", 80);
ServerSocket server = new ServerSocket(80);

在創建socket時如果發生錯誤,將產生IOException,在程序中必須對之作出處理。所以在創建Socket或ServerSocket是必須捕獲或拋出例外。

⑤ java中怎麼用TCP發送數據

println和 print的區別 還是參照javadoc比較准確,就是最後是否跟上一個換行。這種函數含義的解釋,查手冊是最准確的。

s.getOutputStream() 返回的結果 直接就是 OutputStream 這個類本身就是用於發送 byte[]的。

字元串轉化成 byte[] 直接調用getBytes。

LZ應該詳細閱讀java手冊。對於已經接觸到的類 比如String,這種基本的,要看看它所有的函數實現。這就和學英語背單詞一樣,必須要有量的上去才行。

閱讀全文

與tcp發送數據工具相關的資料

熱點內容
ps怎麼輸出透明背景的mp4文件 瀏覽:930
廣安哪裡學習數控編程 瀏覽:899
哪些公司好進行數據分析 瀏覽:965
被淘汰的網路熱詞有哪些 瀏覽:956
爐石傳說安卓能不能玩 瀏覽:715
為什麼記事本不能生成c文件 瀏覽:90
蘋果6splus鋼化膜有水氣 瀏覽:783
桃花app在哪裡下載 瀏覽:945
wps怎麼把表格里兩列數據內容合並 瀏覽:813
熊貓app是什麼 瀏覽:615
安檢文件檢查指什麼 瀏覽:918
惠州蘋果供應商 瀏覽:169
小米手機怎麼共享網路 瀏覽:118
微信總是載入數據怎麼回事 瀏覽:203
不同編程語言如何調用系統api 瀏覽:328
到付的文件一般是什麼 瀏覽:959
圖片如何轉為文件方式發送 瀏覽:546
大眾奧迪通道數據流手冊怎麼讀懂 瀏覽:230
友盟微信分享未知錯誤 瀏覽:28
下載完win10系統文件打不開 瀏覽:182

友情鏈接