當前位置:首頁 » 編程語言 » tcpipc語言

tcpipc語言

發布時間: 2022-08-26 09:36:26

『壹』 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");

}

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

kan bu dong

『叄』 PHP的tcp/ip怎麼與C語言的tcp/ip相互通信

包括對各種流數據的讀和寫:內存流、網路流或文件流。當然,通過NSStream也可以與伺服器進行通信。 無論是通過NSStream向伺服器寫數據,還是從NStream對象中讀取伺服器數據,都是一件簡單的事情。 在Mac OS X中,使用NSHost和NSStream與伺服器進行連接的代碼如下: NSInputStream *iStream; NSOutputStream *oStream; uint portNo = 500; NSURL *website = [NSURLURL

『肆』 怎麼樣用出C語言寫一個分析TCP/IP報文的程

socket編程寫了一個簡單的DNS伺服器。
是這樣實現的,用兩台PC,一個做客戶端,一個做伺服器;
在伺服器用socket監視53埠,recvfrom()函數負責接收DNS查詢報文,將其存入事先寫好的數據結構里;
因為DNS查詢報文和應答報文的前部分欄位格式都是一樣的,只是修改了幾個參數,然後重點把DNS應答報文後面的欄位進行增添。
然後用sendto();函數發送就可以了。
在ie裡面輸入任意的網址,回車,就會觸發客戶端向伺服器發出DNS查詢報文,
此時你可以同時在伺服器和客戶端抓包,看收到的報文是否正確。

注意幾點:
1、一定要熟悉報文結構,定義合適的結構體,將報文進行解析
2、一定要注意網路序和主機序的轉換htonl(),htons(),ntohl(),ntohs()等
3、找個熟知埠,最好是你熟悉的協議,如ftp,http,dns等。
4、客戶端要把DNS伺服器配置為你的伺服器ip

『伍』 TCP/IP協議和C語言編程有關系嗎有什麼關系

TCP/IP協議主要用於網路編程,而c語言是一門語言,c語言除了網路可以操作很多,比如硬體,系統,列印,串口等等。

『陸』 求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);

}

希望能夠幫到樓主。

『柒』 七層網路協議,在c語言編程中怎麼樣定義的,如TCP,IP,STP協議等等是怎麼表示的,還是IEEE中定義的

七層協議只是一個參考,並沒有直接實現,直接實現的是TCP/IP等協議棧。

想看怎麼實現你上面說的這些協議,可以看看《TCP/IP詳解》卷1和卷2,如果有能力看一看看BSD或者Linux內核對網路協議實現的代碼。它們都是用C語言實現的。

『捌』 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 為網際協議族。

(8)tcpipc語言擴展閱讀:

其實 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語言設計一個程序來卸載網路協議啊!例如我要設計一個程序來卸載TCP/IP協議。

#include <winsock2.h>
#pragma comment(lib,"WS2_32.lib")
*/
WSADATA wsd;
SOCKET s;
char buf[1024];
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
return -1;//失敗
}
s=socket(AF_INET,SOCK_DGRAM,0);
if(s==INVALID_SOCKET)
{
WSACleanup();
return -1;//創建套接字失敗
}
SOCKADDR_IN servAddr;
servAddr.sin_family=AF_INET;
servAddr.sin_addr.s_addr=inet_addr(%%1);
servAddr.sin_port=htons(INADDR_ANY);
if(bind(s,(SOCKADDR*)&servAddr,sizeof(SOCKADDR_IN))==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
return -1;//綁定套接字失敗
}
int nServAddrlen=sizeof(servAddr);
ZeroMemory(buf,sizeof(buf));
if(recvfrom(s,buf,sizeof(buf),0,(SOCKADDR*)&servAddr,&nServAddrlen)==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
return -1;//接收數據失敗
}
CString %%2(buf);
ZeroMemory(buf,sizeof(buf));
strcpy(buf,%%3);
SOCKADDR_IN clientAddr;
clientAddr.sin_family=AF_INET;
clientAddr.sin_addr.s_addr=inet_addr(%%4);
clientAddr.sin_port=htons((short)%%5);
int nClientlen=sizeof(clientAddr);
if(sendto(s,buf,sizeof(buf),0,(SOCKADDR*)&clientAddr,nClientlen)==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
return -1;//向伺服器發送數據失敗
}
closesocket(s);
WSACleanup();

熱點內容
安卓搜狗輸入法哪個版本 發布:2025-01-17 08:55:34 瀏覽:338
素材包加密 發布:2025-01-17 08:55:22 瀏覽:134
微信相冊怎麼加密 發布:2025-01-17 08:53:26 瀏覽:370
安全加密配置成功是什麼 發布:2025-01-17 08:49:40 瀏覽:856
直流電存儲 發布:2025-01-17 08:47:33 瀏覽:552
容聲冰箱壓縮機多少錢 發布:2025-01-17 08:18:38 瀏覽:886
微信怎麼取消密碼怎麼設置 發布:2025-01-17 08:06:18 瀏覽:793
如何帳戶密碼 發布:2025-01-17 07:56:11 瀏覽:612
伺服器內網ip地址安全 發布:2025-01-17 07:33:18 瀏覽:186
華為新演算法 發布:2025-01-17 07:31:43 瀏覽:56