當前位置:首頁 » 編程軟體 » tcp編程

tcp編程

發布時間: 2022-01-08 20:07:16

A. 當使用tcp協議編程時,哪些問題是程序員考慮和處理的

發送數據的格式和應用協議。

一旦雙方建立了TCP連接,連接中的任何一方都能向對方發送數據並接收對方發來的數據。

發送數據時,程序員可以編寫程序不斷地將數據流寫入TCP的發送緩沖區中,然後TCP自動從發送緩沖區中取出一定量的數據流寫入TCP的發送緩沖區中,然後TCP自動從發送緩沖區中取出一定量的數據,將其組成TCP報文段逐個發送給IP層,再通過IP層發送出去。

接收端從IP層收到TCP報文段後,將其暫時保存在接收緩沖區中,這時程序員就可以編寫程序依次讀取接收緩沖區中的數據,從而達到通信的目的。



(1)tcp編程擴展閱讀

利用TcpClient和TcpListener在同步方式下接收、發送數據及監聽客戶端連接時,在操作沒有完成之前一直處於阻塞狀態,這在接收、發送數據量不大或者操作用時較短的情況下是比較方便的。

但是,對於那些完成時間可能較長(如傳送大文件)的任務時,使用同步操作可能就會造成系統假死,這種情況下,最好的辦法是使用非同步操作。

B. TCP應用編程的非同步TCP應用編程

利用TcpClient和TcpListener在同步方式下接收、發送數據及監聽客戶端連接時,在操作沒有完成之前一直處於阻塞狀態,這在接收、發送數據量不大或者操作用時較短的情況下是比較方便的。但是,對於那些完成時間可能較長(如傳送大文件)的任務時,使用同步操作可能就會造成系統假死,這種情況下,最好的辦法是使用非同步操作。 所謂非同步操作方式,就是我們希望讓某個工作開始以後,能在這個工作尚未完成的時候繼續處理其他工作。
這里舉一個是常生活的例子來說明:我們(主線程)安排A(子線程A)負責處理客人來訪登記工作,在同步方式下,如果沒有人來訪,A就只能一直呆在某個房間等待,而不能從事其他工作,顯然這種方式不利於並行處理。我們希望,沒有人來訪時,A不一定在這個房間等待,也可以到別處繼續做其他工作,而把等待這個工作交給總控室人員完成。這個總控室就是Windows系統本身,總控室如何及時通知A呢?可以讓A先告訴總控人員一個手機號F(callback需要的方法名F),以便有人來訪時可以立即給A打電話(通過委託自動運行F),A接到通知後,再回來處理客人來訪登記事務。
非同步操作最大的優點是可以在一個操作沒完成之前進行其他操作。.NET框架提供一種稱為AsyncCallback(非同步回調)的委託,該委託允許啟動非同步的功能,並在條件具備時調用提供的回調方法(是一種在操作或活動完成時由委託自動調用的方法),然後在這個方法中完成並結束未完成的工作。
在非同步操作方式下,每個Begin方法都有一個匹配的End方法。編寫程序時利用Begin方法開始執行非同步操作,然後由委託在條件具備時調用End方法完成並結束非同步操作。 在現實工作中,有很多工作是相互的,某些工作必須等待另一個工作完成後才能繼續,這就是非同步操作中的同步問題。在System.Threading命名空間中, 有一個EventWaitHandle類,用於在非同步操作中控制線程的同步,即控制一個或多個線程繼續執行或等待其他線程完成。EventWaitHandle類可以讓操作系統通過發出信號完成多個線程間的同步,需要同步的線程可以先阻塞當前線程,然後根據Windows操作系統發出的信號,決定是繼續阻塞還是等待其他工作完成,還是不再等待而直接繼續執行。
EventWaitHandle類提供以下方法進行線程式控制制:
Reset方法:將信息狀態設置為非終止狀態,即不讓操作系統發出信號,從而使那些只能接收到信號才能繼續執行的線程處於阻塞狀態。
Set方法:將事件狀態設置為終止狀態,這樣的等待的線程將會收到信號,從而由等待轉為繼續。
WaitOne方法:阻塞當前線程,等待操作系統發出信號,直到收到信號才解除阻塞。
操作系統發出信號的方式有兩種:
(1)發出一個信號,使某個等待信號的線程解除阻塞,繼續執行。
(2)發出一個信號,使所有等待信號的線程全部解除阻塞,繼續執行。 AsyncCallback委託用於引用非同步操作完成時調用的 回調方法。在非同步操作方式下,由於程序可以在啟動非同步操作後繼續執行其他代碼,因此必須有一種機制,以保證該非同步操作完成時能及時通過調用者。可以通過AsyncCallback委託實現這種機制。
非同步操作的每一個方法都有一個Begin...方法和End...方法,程序調用Begin...方法時,系統會自動在線程池中創建對應的線程進行非同步操作,從而保證調用方和被調用方同時執行,當線程池中的Begin...方法執行完畢時,會自動通過AsyncCallback委託調用在Begin...方法的參數中指定的回調方法。
回調方法是在程序中事先定義的,在回調方法中,通過End...方法獲取Begin...方法的返回值和所有輸入/輸出的參數,從而達到完成參數傳遞的目的。

C. tcpip編程用什麼語言

這個問題說的不清楚:你想問的是使用TCP/IP編程,還是要編程實現(改變)TCP/IP
前者:幾乎任何常見的計算機語言,包括但不限於C、C++、C#、Java、PHP、TCL……
後者:對於一般用戶太困難,一個完整的協議棧差不多是半個操作系統了。如果是做網路試驗可以用Linux+gcc或者Windows+DDK

D. TCP 客戶端編程問題

client.cpp

#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
void main() {

// 初始化 Winsock.
WSADATA wsaData;
int iResult = WSAStartup( MAKEWORD(2,2), &wsaData );
if ( iResult != NO_ERROR )
printf("Error at WSAStartup()\n");

// 建立socket socket.
SOCKET client;
client = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );

if ( client == INVALID_SOCKET ) {
printf( "Error at socket(): %ld\n", WSAGetLastError() );
WSACleanup();
return;
}

// 連接到伺服器.
sockaddr_in clientService;

clientService.sin_family = AF_INET;
clientService.sin_addr.s_addr = inet_addr( "127.0.0.1" );
clientService.sin_port = htons( 27015 );

if ( connect( client, (SOCKADDR*) &clientService, sizeof(clientService) ) == SOCKET_ERROR) {
printf( "Failed to connect.\n" );
WSACleanup();
return;
}

// 發送並接收數據.
int bytesSent;
int bytesRecv = SOCKET_ERROR;
char sendbuf[32] = "Client: Sending data.";
char recvbuf[32] = "";

bytesSent = send( client, sendbuf, strlen(sendbuf), 0 );
printf( "Bytes Sent: %ld\n", bytesSent );

while( bytesRecv == SOCKET_ERROR ) {
bytesRecv = recv( client, recvbuf, 32, 0 );
if ( bytesRecv == 0 || bytesRecv == WSAECONNRESET ) {
printf( "Connection Closed.\n");
break;
}
if (bytesRecv < 0)
return;
printf( "Bytes Recv: %ld\n", bytesRecv );
}

return;
}

E. 最近開始學習TCP/IP 編程,因為原來C語言學的不是很好,所以想問一下,TCP/IP編程是用什麼軟體操作的

TCP/IP本身計算機網路通信領域的問題,它本身不是編程。
而你說的編程可能有兩種意思,
一、如果實現TCP/IP協議。
二、如何實現具有網路通信功能的應用程序。

第一種情況,一般人是不需要的。
第二種情況,建議閱讀與網路協議相關的圖書。最重要的是網路「套接字」。它提供的應用程序進行網路通信的一套方法。不過它也不需要直接了解TCP/IP。

而C語言學習呢,不需要學習的非常好,只要清楚知道,函數、變數、結構體,各種選擇語句、循環語句,各種表達式即可。

F. TCP編程的特點是什麼

你必須掌握 SOCKET 套接字編程!它分為伺服器端和客戶端代碼。兩端代碼不一樣,有 bind、listen、accept,......,等等網路原語。參見「TCP/IP高級編程」。

G. TCP/IP編程有什麼用啊

TCP/IP、Http、Soap都是基本的通訊協議。樓主若是行內人士一定知道這些。這里我不妨多說幾句。
通訊協議即網路中(包括互聯網、區域網)傳遞、管理信息的一些規范。常見的協議有:TCP/IP協議、IPX/SPX協議、NetBEUI協議、SOAP協議等。在區域網中用得的比較多的是IPX/SPX。用戶如果訪問Internet,則必須在網路協議中添加TCP/IP協議。

TCP/IP是「transmission Control Protocol/Internet Protocol」的簡寫,它規范了網路上的所有通信設備,尤其是一個主機與另一個主機之間的數據往來格式以及傳送方式。TCP/IP是INTERNET的基礎協議,也是一種電腦數據打包和定址的標准方法.假設伺服器、實現網路通信(比如聊天),不管你是.NET還是其他,一定要了解TCP/IP。

在WEB編程中,服務端是指提供HTTP服務的部分,客戶端是指你使用的瀏覽器。HTTP協議就是實現客戶端和伺服器端的通訊。簡單說就是請求與響應,你提交了什麼,返回個什麼都可以在HTTP里規范。舉個例子,用戶在WEB頁上看到自己的客戶端信息實際是HTTP的2次通訊。

SOAP(Simple Object Access Protocal,簡單對象訪問協議) 技術有助於實現大量異構程序和平台之間的互操作性,根據我有限的了解,SOAP是把成熟的基於HTTP的WEB技術與XML的靈活性和可擴展性組合在了一起。比如我們.NET中的WEB服務,就是基於SOAP

簡單說就是這樣,每一種通訊協議都很復雜,建議樓主多了解HTTP和SOAP

H. TCP網路編程有什麼特點

TCP編程和各基本的編程沒有多大區別,主要的區別在於其中使用函數全是操作系統提供的

Tcp是一種面向連接的,可靠的位元組流服務。(設有數據包編號與差錯控制機制。)

特點:

由於網路的復雜性,傳輸信息時,數據包可能會丟失,差錯控制中的確認機制在接收到數據包是發送確認信息,若是數據包丟失,則回發數據包編號,讓對方重新發送;

由於網路的復雜性,傳輸信息時有多種網路傳送途徑可以選擇,數據包被接收的順序與發送順序不同,可以根據數據包的編號,將數據包重組。

優點:網路連接是以點對點的形式,加上上述特點,保證了數據的安全性,數據包不會中途被劫。

缺點:耗費資源很多

補充:TCP(Transmission Control Protocol 傳輸控制協議)是一種面向連接的、可靠的、基於位元組流的傳輸層通信協議,由IETF的RFC 793定義。在簡化的計算機網路OSI模型中,它完成第四層傳輸層所指定的功能,用戶數據報協議(UDP)是同一層內另一個重要的傳輸協議。在網際網路協議族(Internet protocol suite)中,TCP層是位於IP層之上,應用層之下的中間層。不同主機的應用層之間經常需要可靠的、像管道一樣的連接,但是IP層不提供這樣的流機制,而是提供不可靠的包交換。

I. TCP編程和UDP編程的主要區別是什麼

tcp和udp從協議上的主要區別是:tcp是可靠的,流時的,但是鏈接建立比較「重」,需要三次握手,udp不能保證數據一定到達接收方,並且數據包並不能保證按照發送方的順序接收。編程上的區別應該並不大,因為底層的API都屏蔽了協議上的差別。

熱點內容
php字元串引號 發布:2024-09-21 08:17:03 瀏覽:783
androidduration 發布:2024-09-21 08:17:03 瀏覽:402
大話西遊2華山論劍什麼時候開的伺服器 發布:2024-09-21 08:00:15 瀏覽:530
編程馬鞍數 發布:2024-09-21 07:48:32 瀏覽:726
新建文件夾dos命令 發布:2024-09-21 07:44:13 瀏覽:131
舞蹈解壓介紹 發布:2024-09-21 07:40:04 瀏覽:973
qq如何顯示密碼 發布:2024-09-21 07:22:26 瀏覽:566
安卓導航如何調大mlc音量 發布:2024-09-21 06:59:21 瀏覽:34
洛奇解壓中發生錯誤 發布:2024-09-21 06:53:30 瀏覽:293
解壓球是什麼 發布:2024-09-21 06:53:29 瀏覽:539