當前位置:首頁 » 雲伺服器 » CTCPIP伺服器程序

CTCPIP伺服器程序

發布時間: 2022-09-10 13:16:32

『壹』 C# TCPIP傳送數據

埠號和ip地址自己改一下
using System.Net;
using System.Net.Sockets;
static void Main(string[] args)//伺服器段
{
int port = 2000;
string host = "127.0.0.1";

/**/
///創建終結點(EndPoint)
IPAddress ip = IPAddress.Parse(host);//把ip地址字元串轉換為IPAddress類型的實例
IPEndPoint ipe = new IPEndPoint(ip, port);//用指定的埠和ip初始化IPEndPoint類的新實例

/**/
///創建socket並開始監聽
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//創建一個socket對像,如果用udp協議,則要用SocketType.Dgram類型的套接字
s.Bind(ipe);//綁定EndPoint對像(2000埠和ip地址)
s.Listen(0);//開始監聽
Console.WriteLine("等待客戶端連接");

/**/
///接受到client連接,為此連接建立新的socket,並接受信息
Socket temp = s.Accept();//為新建連接創建新的socket
Console.WriteLine("建立連接");
string recvStr = "";
byte[] recvBytes = new byte[1024];
int bytes;
bytes = temp.Receive(recvBytes, recvBytes.Length, 0);//從客戶端接受信息
recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);

/**/
///給client端返回信息
Console.WriteLine("server get message:{0}", recvStr);//把客戶端傳來的信息顯示出來
string sendStr = "ok!Client send message successful!";
byte[] bs = Encoding.ASCII.GetBytes(sendStr);
temp.Send(bs, bs.Length, 0);//返回信息給客戶端
temp.Close();
s.Close();
Console.ReadLine();

}

static void Main(string[] args)//客戶端
{
try
{
int port = 2000;
string host = "127.0.0.1";

/**/
///創建終結點EndPoint
IPAddress ip = IPAddress.Parse(host);
//IPAddress ipp = new IPAddress("127.0.0.1");
IPEndPoint ipe = new IPEndPoint(ip, port);//把ip和埠轉化為IPEndpoint實例

/**/
///創建socket並連接到伺服器
Socket c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//創建Socket
Console.WriteLine("Conneting…");
c.Connect(ipe);//連接到伺服器

/**/
///向伺服器發送信息
string sendStr = "hello!This is a socket test";
byte[] bs = Encoding.ASCII.GetBytes(sendStr);//把字元串編碼為位元組
Console.WriteLine("Send Message");
c.Send(bs, bs.Length, 0);//發送信息

/**/
///接受從伺服器返回的信息
string recvStr = "";
byte[] recvBytes = new byte[1024];
int bytes;
bytes = c.Receive(recvBytes, recvBytes.Length, 0);//從伺服器端接受返回信息
recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);
Console.WriteLine("client get message:{0}", recvStr);//顯示伺服器返回信息

/**/
///一定記著用完socket後要關閉
c.Close();

}
catch (ArgumentNullException e)
{
Console.WriteLine("argumentNullException: {0}", e);
}
catch (SocketException e)
{
Console.WriteLine("SocketException:{0}", e);
}

Console.WriteLine("Press Enter to Exit");

}

『貳』 TCP/IP是什麼意思

TCP/IP 指傳輸控制協議/網際網路互聯協議(Transmission Control Protocol / Internet Protocol),又名網路通訊協議。

TCP/IP是Internet最基本的協議、Internet國際互聯網路的基礎,由網路層的IP協議和傳輸層的TCP協議組成,是供連接網際網路的計算機進行通信的通信協議。

TCP/IP 定義了電子設備(比如計算機)如何連入網際網路,以及數據如何在它們之間傳輸的標准。

TCP/IP協議從字面上看,有人可能會認為 TCP/IP 是指 TCP 與 IP 兩種協議。雖然實際中的確有這兩種協議,但是在很多情況下,它泛指 IP、ICMP、TCP、UDP、TELNET、FTP、HTTP 等協議群,所以有時也稱 TCP/IP 為網際協議族。

(2)CTCPIP伺服器程序擴展閱讀:

其實 TCP/IP 也是使用 OSI七層協議的觀念, 所以同樣具有分層的架構,只是將它簡化為四層,在結構上面比較沒有這么嚴謹,程序撰寫會比較容易些。

TCP/IP協議族是一個四層協議系統,自底而上分別是數據鏈路層、網路層、傳輸層和應用層。每一層完成不同的功能,且通過若干協議來實現,上層協議使用下層協議提供的服務。

1、數據鏈路層。

該層實現了網卡介面的網路驅動程序,以處理數據在物理媒介(比如乙太網、令牌環等)上的傳輸。不同的物理網路具有不同的電氣特性,網路驅動程序隱藏了這些細節,為上層協議提供一個統一的介面。

數據鏈路層兩個常用的協議是ARP協議(Address Resolve Protocol,地址解析協議)和RARP協議(Reverse Address Resolve Protocol,逆地址解析協議)。

它們實現了IP地址和機器物理地址(通常是MAC地址,乙太網、令牌環和802.11無線網路都使用MAC地址)之間的相互轉換。

2、網路層

網路層實現數據包的選路和轉發。WAN(Wide Area Network,廣域網)通常使用眾多分級的路由器來連接分散的主機或LAN(Local Area Network,區域網),因此,通信的兩台主機一般不是直接相連的,而是通過多個中間節點(路由器)連接的。

網路層的任務就是選擇這些中間節點,以確定兩台主機之間的通信路徑。同時,網路層對上層協議隱藏了網路拓撲連接的細節,使得在傳輸層和網路應用程序看來,通信的雙方是直接相連的。

網路層最核心的協議是IP協議(Internet Protocol,網際網路協議)。IP協議根據數據包的目的IP地址來決定如何投遞它。如果數據包不能直接發送給目標主機,那麼IP協議就為它尋找一個合適的下一跳(next hop)路由器,並將數據包交付給該路由器來轉發。

多次重復這一過程,數據包最終到達目標主機,或者由於發送失敗而被丟棄。可見,IP協議使用逐跳(hop by hop)的方式確定通信路徑。

3、傳輸層

傳輸層為兩台主機上的應用程序提供端到端(end to end)的通信。與網路層使用的逐跳通信方式不同,傳輸層只關心通信的起始端和目的端,而不在乎數據包的中轉過程。圖1-3展示了傳輸層和網路層的這種區別。

4、應用層

應用層負責處理應用程序的邏輯。數據鏈路層、網路層和傳輸層負責處理網路通信細節,這部分必須既穩定又高效,因此它們都在內核空間中實現,而應用層則在用戶空間實現,因為它負責處理眾多邏輯,比如文件傳輸、名稱示等。

而應用層則在用戶空間實現,因為它負責處理眾多邏輯,比如文件傳輸、名稱查詢和網路管理等。如果應用層也在內核中實現,則會使內核變得非常龐大。

當然,也有少數伺服器程序是在內核中實現的,這樣代碼就無須在用戶空間和內核空間來回切換(主要是數據的復制),極大地提高了工作效率。

應用層協議(或程序)可能跳過傳輸層直接使用網路層提供的服務,比如ping程序和OSPF協議。應用層協議(或程序)通常既可以使用TCP服務,又可以使用UDP服務,比如DNS協議。

『叄』 在線等,求C語言高手,實現一個簡單的TCPIP程序以實現兩台計算機之間的聊天通信,

kan bu dong

『肆』 如何重新安裝TCP/IP協議

重新安裝TCP/IP協議的方法,可以通過以下步驟操作來實現:

1、在windows7操作系統桌面上,滑鼠右鍵右下角網路連接圖標選擇打開網路和共享中心選項進入。

『伍』 求編寫一個基於TCPIP的文件傳輸系統,在linux下運行,用C編寫 有客戶端和伺服器端 求高人棒棒忙

其實大家如果對tcp/ip網路編程這一塊不是很熟悉的話,還有一個好辦法就是直接編寫IO 操作的程序,通過Xinetd來管理網路這一塊,一樣可以實現的,而且非常方便.
這樣就不需要別人幫你創建服務端了.

至於客戶端,沒有辦法,如果可以的話,可以採用tcp工具替代,當然這些都是歪路子.

如果只是文件傳輸的話,就選用FTP原生的伺服器吧,比自己折騰得穩定的多.

『陸』 什麼是tcpiptcpip各有什麼作用

TCP/IP的通訊協議

這部分簡要介紹一下TCP/IP的內部結構,為討論與互聯網有關的安全問題打下基礎。TCP/IP協議組之所以流行,部分原因是因為它可以用在各種各樣的信道和底層協議(例如T1和X.25、乙太網以及RS-232串列介面)之上。確切地說,TCP/IP協議是一組包括TCP協議和IP協議,UDP(User Datagram Protocol)協議、ICMP(Internet Control Message Protocol)協議和其他一些協議的協議組。

TCP/IP整體構架概述

TCP/IP協議並不完全符合OSI的七層參考模型。傳統的開放式系統互連參考模型,是一種通信協議的7層抽象的參考模型,其中每一層執行某一特定任務。該模型的目的是使各種硬體在相同的層次上相互通信。這7層是:物理層、數據鏈路層、網路層、傳輸層、話路層、表示層和應用層。而TCP/IP通訊協議採用了4層的層級結構,每一層都呼叫它的下一層所提供的網路來完成自己的需求。這4層分別為:

應用層:應用程序間溝通的層,如簡單電子郵件傳輸(SMTP)、文件傳輸協議(FTP)、網路遠程訪問協議(Telnet)等。

傳輸層:在此層中,它提供了節點間的數據傳送服務,如傳輸控制協議(TCP)、用戶數據報協議(UDP)等,TCP和UDP給數據包加入傳輸數據並把它傳輸到下一層中,這一層負責傳送數據,並且確定數據已被送達並接收。

互連網路層:負責提供基本的數據封包傳送功能,讓每一塊數據包都能夠到達目的主機(但不檢查是否被正確接收),如網際協議(IP)。

網路介面層:對實際的網路媒體的管理,定義如何使用實際網路(如Ethernet、Serial Line等)來傳送數據。

TCP/IP中的協議

以下簡單介紹TCP/IP中的協議都具備什麼樣的功能,都是如何工作的:

1. IP

網際協議IP是TCP/IP的心臟,也是網路層中最重要的協議。

IP層接收由更低層(網路介面層例如乙太網設備驅動程序)發來的數據包,並把該數據包發送到更高層---TCP或UDP層;相反,IP層也把從TCP或UDP層接收來的數據包傳送到更低層。IP數據包是不可靠的,因為IP並沒有做任何事情來確認數據包是按順序發送的或者沒有被破壞。IP數據包中含有發送它的主機的地址(源地址)和接收它的主機的地址(目的地址)。

高層的TCP和UDP服務在接收數據包時,通常假設包中的源地址是有效的。也可以這樣說,IP地址形成了許多服務的認證基礎,這些服務相信數據包是從一個有效的主機發送來的。IP確認包含一個選項,叫作IP source routing,可以用來指定一條源地址和目的地址之間的直接路徑。對於一些TCP和UDP的服務來說,使用了該選項的IP包好象是從路徑上的最後一個系統傳遞過來的,而不是來自於它的真實地點。這個選項是為了測試而存在的,說明了它可以被用來欺騙系統來進行平常是被禁止的連接。那麼,許多依靠IP源地址做確認的服務將產生問題並且會被非法入侵。

2. TCP

如果IP數據包中有已經封好的TCP數據包,那麼IP將把它們向『上』傳送到TCP層。TCP將包排序並進行錯誤檢查,同時實現虛電路間的連接。TCP數據包中包括序號和確認,所以未按照順序收到的包可以被排序,而損壞的包可以被重傳。

TCP將它的信息送到更高層的應用程序,例如Telnet的服務程序和客戶程序。應用程序輪流將信息送回TCP層,TCP層便將它們向下傳送到IP層,設備驅動程序和物理介質,最後到接收方。

面向連接的服務(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它們使用了TCP。DNS在某些情況下使用TCP(發送和接收域名資料庫),但使用UDP傳送有關單個主機的信息。

3.UDP

UDP與TCP位於同一層,但對於數據包的順序錯誤或重發。因此,UDP不被應用於那些使用虛電路的面向連接的服務,UDP主要用於那些面向查詢---應答的服務,例如NFS。相對於FTP或Telnet,這些服務需要交換的信息量較小。使用UDP的服務包括NTP(網落時間協議)和DNS(DNS也使用TCP)。

欺騙UDP包比欺騙TCP包更容易,因為UDP沒有建立初始化連接(也可以稱為握手)(因為在兩個系統間沒有虛電路),也就是說,與UDP相關的服務面臨著更大的危險。

4.ICMP

ICMP與IP位於同一層,它被用來傳送IP的的控制信息。它主要是用來提供有關通向目的地址的路徑信息。ICMP的『Redirect』信息通知主機通向其他系統的更准確的路徑,而『Unreachable』信息則指出路徑有問題。另外,如果路徑不可用了,ICMP可以使TCP連接『體面地』終止。PING是最常用的基於ICMP的服務。

5. TCP和UDP的埠結構

TCP和UDP服務通常有一個客戶/伺服器的關系,例如,一個Telnet服務進程開始在系統上處於空閑狀態,等待著連接。用戶使用Telnet客戶程序與服務進程建立一個連接。客戶程序向服務進程寫入信息,服務進程讀出信息並發出響應,客戶程序讀出響應並向用戶報告。因而,這個連接是雙工的,可以用來進行讀寫。

兩個系統間的多重Telnet連接是如何相互確認並協調一致呢?TCP或UDP連接唯一地使用每個信息中的如下四項進行確認:

源IP地址 發送包的IP地址。

目的IP地址 接收包的IP地址。

源埠 源系統上的連接的埠。

目的埠 目的系統上的連接的埠。

埠是一個軟體結構,被客戶程序或服務進程用來發送和接收信息。一個埠對應一個16比特的數。服務進程通常使用一個固定的埠,例如,SMTP使用25、Xwindows使用6000。這些埠號是『廣為人知』的,因為在建立與特定的主機或服務的連接時,需要這些地址和目的地址進行通訊。

『柒』 求C語言高手,實現一個簡單的TCPIP程序以實現兩台計算機之間的聊天通信,

你上面給出的代碼其實就是MSDN裡面的演示代碼,不過不完整,只演示了兩個函數的使用,我給你看看我寫的TCP通訊程序,可以在同一個區域網內的兩台不同計算機之間聊天:

這其實就是某本將網路通訊的教程裡面的例子,不過是我自己重寫了一遍,下面給你代碼:

========================

下面是公共代碼:

========================

#ifndef__CINITSOCK__H__

#define__CINITSOCK__H__

#include<winsock2.h>

#include<iphlpapi.h>

#pragmacomment(lib,"ws2_32.lib")

#pragmacomment(lib,"iphlpapi.lib")

classCInitSock

{

public:

CInitSock(intnMinorVer=2,intnMajorVer=2)

{

WSADATAwsData;

WORDwVer=MAKEWORD(nMinorVer,nMajorVer);

if(0!=WSAStartup(wVer,&wsData))exit(0);

}

~CInitSock()

{

WSACleanup();

}

};

#endif

========================

下面是客戶端的代碼:

=======================

#include"CInitSock.h"

#include<iostream>

usingnamespacestd;

CInitSockg_Sock;

voidmain()

{

SOCKETsockClient=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

if(INVALID_SOCKET==sockClient)

return;

sockaddr_insockAddr;

sockAddr.sin_family=AF_INET;

sockAddr.sin_port=htons(4567);

sockAddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");

if(-1==connect(sockClient,(sockaddr*)&sockAddr,sizeof(sockAddr)))

{

cout<<"connectfailed"<<endl;

return;

}

while(true)

{

charszBuf[MAX_PATH];

ZeroMemory(szBuf,sizeof(szBuf));

cout<<"YouSay:";

cin>>szBuf;

if(SOCKET_ERROR ==send(sockClient,szBuf,MAX_PATH,0))

{

cout<<"sendfailed"<<endl;

return;

}

intnRecvLen=recv(sockClient,szBuf,MAX_PATH,0);

if(nRecvLen>0)

{

//szBuf[nRecvLen]='';

cout<<"ServiceSay:"<<szBuf<<endl<<endl;

}

else

{

cout<<"recvfailed"<<endl;

return;

}

}

closesocket(sockClient);

}

======================

下面是服務端的代碼:

======================

#include"CInitSock.h"

#include<iostream>

usingnamespacestd;

CInitSockg_Sock;

voidmain()

{

SOCKETsockClient=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

if(INVALID_SOCKET==sockClient)

return;

sockaddr_insockAddr;

sockAddr.sin_family=AF_INET;

sockAddr.sin_port=htons(4567);

sockAddr.sin_addr.S_un.S_addr=INADDR_ANY;

bind(sockClient,(sockaddr*)&sockAddr,sizeof(sockAddr));

listen(sockClient,SOMAXCONN);

charszBuf[MAX_PATH];

sockaddr_inremoteAddr;

intnLen=sizeof(sockaddr_in);

SOCKETsock=accept(sockClient,(sockaddr*)&remoteAddr,&nLen);

while(true)

{

intnRecvLen=recv(sock,szBuf,MAX_PATH,0);

if(nRecvLen>0)

{

cout<<"ClientSay:"<<szBuf<<endl<<endl;

}

ZeroMemory(szBuf,sizeof(szBuf));

cout<<"YouSay:";

cin>>szBuf;

if(SOCKET_ERROR==send(sock,szBuf,MAX_PATH,0))

{

cout<<"sendfailed"<<endl;

}

}

closesocket(sock);

closesocket(sockClient);

}

希望能夠幫到樓主。

『捌』 修改TCP/IP並發連接數

1、可使用以下命令,查看當前伺服器啟動的httpd進程數,亦即當前伺服器提供httpd服務的並發請求數。

『玖』 tcpip 一對多通信如何實現

同學您好!!!單個伺服器與
多個用戶的通信連接,用戶方面的流程是:1.新建套接字Socket
s;2.確定伺服器IP地址和埠號 addr = 192.168.1.12 port =
8080;3.對本機地址進行顯式或隱式綁定(一般採用隱式綁定故這步可以忽略)4.開啟與伺服器的連接connect(s,addr);5.進行數據交
互傳輸 send recv;6.通信結束 關閉套接字closesocket(s);

伺服器方面的流程是:1.新建套接字Socket
s;2.確定本地IP和埠號(不能隱式綁定)addr = 192.168.1.12 port =
8080;3.對本地IP和埠進行綁定bind(s,addr);4.對埠進行監聽listen(s);5.接收一個連接 newsock =
accept(s);6.伺服器在接收了一個連接之後,便新建一個套接字newsock,
此時要開啟一個子線程來負責處理與該用戶機的數據傳輸,而主線程繼續監聽埠創建新的子線程來與多個用戶進行連接。C下可以採用createThread
函數,

CreateThread(NULL,0,
chat,//子線程函數入口
&newsock,//傳給子線程的參數
0,&Tid);

然後在chat函數中進行recv和send即可

『拾』 如何打開伺服器的tcpip管道共享

第一步:檢查AutoShareServer和AutoShareWks注冊表值,以確保未將它們設置為0。依次點擊「開始→運行」,輸入regedit,然後按回車鍵進入注冊表編輯器。

第二步:找到並單擊HKEY_LOCAL_MACHINE_System_CurrentControlSetServices_LanmanServerParameters。

第三步:如果LanmanServerParameters子項中的AutoShareServer 和AutoShareWks DWORD值配置的數值為0,則將該值更改為1。

第四步:重新啟動計算機。通常運行Windows Server 2003、Windows XP、Windows 2000的計算機會在啟動過程中自動創建。

第五步:啟動計算機後,我們可以通過運行CMD進入命令行模式,然後運行net share,在共享列表中應該會查找到Admin$、C$和IPC$等默認共享的存在。

提示:如果發現按照上述設置,默認共享還沒有出現的話,那麼很有可能是病毒或非法程序破壞了系統,我們需要用更新了最新病毒庫的殺毒軟體在安全模式下掃描整個系統。
另外--控制面板--管理工具-服務--將裡面的server服務以及Telnet下面的terminal serveices 服務都設置為啟用並設置為自動

熱點內容
巴法雲伺服器帶寬 發布:2025-01-12 13:15:26 瀏覽:676
搭建國外伺服器需要多少錢 發布:2025-01-12 13:08:01 瀏覽:827
我的世界mod伺服器開荒 發布:2025-01-12 13:07:10 瀏覽:757
sql優化書 發布:2025-01-12 13:07:09 瀏覽:455
高校網站伺服器搭建與維護論文 發布:2025-01-12 13:06:31 瀏覽:711
sqlserver實例沒有 發布:2025-01-12 12:57:18 瀏覽:252
代碼文件伺服器地址怎麼寫 發布:2025-01-12 12:50:47 瀏覽:760
java中方法與 發布:2025-01-12 12:50:13 瀏覽:655
如何快速查找c語言編譯時的錯 發布:2025-01-12 12:49:56 瀏覽:32
看門狗上傳病毒 發布:2025-01-12 12:32:54 瀏覽:326