當前位置:首頁 » 編程語言 » c語言網路協議

c語言網路協議

發布時間: 2022-07-02 16:14:29

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

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

『貳』 怎麼用C語言寫三次握手協議

雖然我以前編寫過、現在已經很久沒有使用 C 語言編寫 TCP/IP 協議的三次握手協議了(即:網路 socket編程),但是我可以給你提供一個基本編程思路:首先 TCP/IP 三次握手協議是基於面向連接的網路協議,而且它是分為 server/client 進行編寫程序的。需要分別編寫 server 端、以及 client 端的代碼的,涉及到的主要函數有:bind( )、listen( )、accept( )、read( )、write( ) 等庫函數,具體的編程方法你可以參考《TCP/IP 詳解:卷 2:實現》一書。
最簡單的功能就是:在一台電腦上發送數據,而在另外一台電腦上接收數據。就有點類似功能最簡單、且無任何界面的聊天程序。

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

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

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

『肆』 有沒有windows下c語言實現udp協議的代碼

php">Windows下C語言的Socket編程例子(TCP和UDP)
一。<TCP>
server端:
復制代碼
1#include"stdafx.h"
2#include<stdio.h>
3#include<winsock2.h>
4
5#pragmacomment(lib,"ws2_32.lib")
6
7intmain(intargc,char*argv[])
8{
9//初始化WSA
10WORDsockVersion=MAKEWORD(2,2);
11WSADATAwsaData;
12if(WSAStartup(sockVersion,&wsaData)!=0)
13{
14return0;
15}
16
17//創建套接字
18SOCKETslisten=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
19if(slisten==INVALID_SOCKET)
20{
21printf("socketerror!");
22return0;
23}
24
25//綁定IP和埠
26sockaddr_insin;
27sin.sin_family=AF_INET;
28sin.sin_port=htons(8888);
29sin.sin_addr.S_un.S_addr=INADDR_ANY;
30if(bind(slisten,(LPSOCKADDR)&sin,sizeof(sin))==SOCKET_ERROR)
31{
32printf("binderror!");
33}
34
35//開始監聽
36if(listen(slisten,5)==SOCKET_ERROR)
37{
38printf("listenerror!");
39return0;
40}
41
42//循環接收數據
43SOCKETsClient;
44sockaddr_inremoteAddr;
45intnAddrlen=sizeof(remoteAddr);
46charrevData[255];
47while(true)
48{
49printf("等待連接... ");
50sClient=accept(slisten,(SOCKADDR*)&remoteAddr,&nAddrlen);
51if(sClient==INVALID_SOCKET)
52{
53printf("accepterror!");
54continue;
55}
56printf("接受到一個連接:%s ",inet_ntoa(remoteAddr.sin_addr));
57
58//接收數據
59intret=recv(sClient,revData,255,0);
60if(ret>0)
61{
62revData[ret]=0x00;
63printf(revData);
64}
65
66//發送數據
67char*sendData="你好,TCP客戶端! ";
68send(sClient,sendData,strlen(sendData),0);
69closesocket(sClient);
70}
71
72closesocket(slisten);
73WSACleanup();
74return0;
75}
復制代碼
client端:
復制代碼
1#include"stdafx.h"
2#include<WINSOCK2.H>
3#include<STDIO.H>
4
5#pragmacomment(lib,"ws2_32.lib")
6
7
8intmain(intargc,char*argv[])
9{
10WORDsockVersion=MAKEWORD(2,2);
11WSADATAdata;
12if(WSAStartup(sockVersion,&data)!=0)
13{
14return0;
15}
16
17SOCKETsclient=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
18if(sclient==INVALID_SOCKET)
19{
20printf("invalidsocket!");
21return0;
22}
23
24sockaddr_inserAddr;
25serAddr.sin_family=AF_INET;
26serAddr.sin_port=htons(8888);
27serAddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
28if(connect(sclient,(sockaddr*)&serAddr,sizeof(serAddr))==SOCKET_ERROR)
29{
30printf("connecterror!");
31closesocket(sclient);
32return0;
33}
34char*sendData="你好,TCP服務端,我是客戶端! ";
35send(sclient,sendData,strlen(sendData),0);
36
37charrecData[255];
38intret=recv(sclient,recData,255,0);
39if(ret>0)
40{
41recData[ret]=0x00;
42printf(recData);
43}
44closesocket(sclient);
45WSACleanup();
46return0;
47}
復制代碼

二.<UDP>
SERVER端
復制代碼
1#include"stdafx.h"
2#include<stdio.h>
3#include<winsock2.h>
4
5#pragmacomment(lib,"ws2_32.lib")
6
7intmain(intargc,char*argv[])
8{
9WSADATAwsaData;
10WORDsockVersion=MAKEWORD(2,2);
11if(WSAStartup(sockVersion,&wsaData)!=0)
12{
13return0;
14}
15
16SOCKETserSocket=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
17if(serSocket==INVALID_SOCKET)
18{
19printf("socketerror!");
20return0;
21}
22
23sockaddr_inserAddr;
24serAddr.sin_family=AF_INET;
25serAddr.sin_port=htons(8888);
26serAddr.sin_addr.S_un.S_addr=INADDR_ANY;
27if(bind(serSocket,(sockaddr*)&serAddr,sizeof(serAddr))==SOCKET_ERROR)
28{
29printf("binderror!");
30closesocket(serSocket);
31return0;
32}
33
34sockaddr_inremoteAddr;
35intnAddrLen=sizeof(remoteAddr);
36while(true)
37{
38charrecvData[255];
39intret=recvfrom(serSocket,recvData,255,0,(sockaddr*)&remoteAddr,&nAddrLen);
40if(ret>0)
41{
42recvData[ret]=0x00;
43printf("接受到一個連接:%s ",inet_ntoa(remoteAddr.sin_addr));
44printf(recvData);
45}
46
47char*sendData="一個來自服務端的UDP數據包 ";
48sendto(serSocket,sendData,strlen(sendData),0,(sockaddr*)&remoteAddr,nAddrLen);
49
50}
51closesocket(serSocket);
52WSACleanup();
53return0;
54}
復制代碼
CLIENT端
復制代碼
1#include"stdafx.h"
2#include<stdio.h>
3#include<winsock2.h>
4
5#pragmacomment(lib,"ws2_32.lib")
6
7intmain(intargc,char*argv[])
8{
9WORDsocketVersion=MAKEWORD(2,2);
10WSADATAwsaData;
11if(WSAStartup(socketVersion,&wsaData)!=0)
12{
13return0;
14}
15SOCKETsclient=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
16
17sockaddr_insin;
18sin.sin_family=AF_INET;
19sin.sin_port=htons(8888);
20sin.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
21intlen=sizeof(sin);
22
23char*sendData="來自客戶端的數據包. ";
24sendto(sclient,sendData,strlen(sendData),0,(sockaddr*)&sin,len);
25
26charrecvData[255];
27intret=recvfrom(sclient,recvData,255,0,(sockaddr*)&sin,&len);
28if(ret>0)
29{
30recvData[ret]=0x00;
31printf(recvData);
32}
33
34closesocket(sclient);
35WSACleanup();
36return0;
37}

『伍』 c語言編程協議

希望對你有幫助:

http://hi..com/jiangqi/blog/item/6305f280522e3cd09123d9fd.html

『陸』 c語言可以編寫通過無線網路傳輸的協議嗎

你好!
c
語言可以。
你說不考慮硬體是不可能的,軟體是建立在硬體的基礎上的,其實能編寫通過無線網路傳輸的協議不斤只有c
語言,但是能夠和硬體緊密結合的還得數c
語言了
基於unix和linux
的無線網路傳輸的協議幾乎都是用c編寫的
我的回答你還滿意嗎~~

『柒』 用c語言完成關於【網路協議分析】的「圖形界面」編程該如何操作

以下代碼是徹底的C語言,外加WindowsAPI函數,不含絲毫的C++語言成分,在VisualC++6.0測試通過,能夠出現一個正規的Windows窗口

#pragmacomment(linker,"/SUBSYSTEM:Windows/ENTRY:mainCRTStartup")

#include<windows.h>

/*使類名成為全局變數*/
TCHARszClassName[]=TEXT("WindowsApp");

/*這個函數由函數DispatchMessage()調用*/
LRESULTCALLBACKWindowProcere(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam)
{
HDChdc;
PAINTSTRUCTps;
RECTrect;
switch(message)/*處理信息*/
{
caseWM_DESTROY:
PostQuitMessage(0);/*發送WM_QUIT到消息隊列*/
break;
caseWM_PAINT:
hdc=BeginPaint(hWnd,&ps);
GetClientRect(hWnd,&rect);
DrawText(hdc,TEXT("Hello,WindowsNT!"),-1,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
EndPaint(hWnd,&ps);
break;
default:/*不處理的消息*/
returnDefWindowProc(hWnd,message,wParam,lParam);
}

return0;
}

/*下面是主函數*/
intmain(void)
{
HINSTANCEhThisInstance=GetMoleHandle(NULL);
intnFunsterStil=SW_SHOW;
HWNDhWnd;/*這是窗口的句柄*/
MSGmessages;/*應用程序的消息保存在這里*/
WNDCLASSEXwincl;/*窗口類的數據結構*/

/*窗口結構*/
wincl.hInstance=hThisInstance;
wincl.lpszClassName=szClassName;
wincl.lpfnWndProc=WindowProcere;/*這個函數由Windows操作系統調用*/
wincl.style=CS_DBLCLKS;/*獲取雙擊指令*/
wincl.cbSize=sizeof(WNDCLASSEX);
/*使用默認圖標和滑鼠指針*/
wincl.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wincl.hIconSm=LoadIcon(NULL,IDI_APPLICATION);
wincl.hCursor=LoadCursor(NULL,IDC_ARROW);
wincl.lpszMenuName=NULL;/*沒有菜單*/
wincl.cbClsExtra=0;/*窗口類後面沒有多餘的位元組*/
wincl.cbWndExtra=0;/*結構或者窗口實例*/
/*使用窗口的默認顏色作為窗口的背景色*/
wincl.hbrBackground=(HBRUSH)COLOR_BACKGROUND;

/*注冊窗口類。如果注冊失敗,那麼就退出程序*/
if(!RegisterClassEx(&wincl))
return0;

/*窗口類已被注冊。創建它的程序*/
hWnd=CreateWindowEx(
0,
szClassName, /*類名*/
TEXT("WindowsApp"), /*窗口標題欄的文字*/
WS_OVERLAPPEDWINDOW,/*默認窗口*/
CW_USEDEFAULT,/*窗口左上角的位置*/
CW_USEDEFAULT,/*窗口右下角的位置*/
544,/*窗口寬度(以「像素」位單位)*/
375,/*窗口高度(以「像素」位單位)*/
HWND_DESKTOP,/*窗口是桌面的子窗口*/
NULL,/*該窗口無菜單*/
hThisInstance,/*程序實例的句柄*/
NULL/*沒有窗口創建的數據*/
);

/*顯示窗口*/
ShowWindow(hWnd,nFunsterStil);

/*重繪窗口*/
UpdateWindow(hWnd);

/*運行消息循環。循環到GetMessage()函數返回0*/
while(GetMessage(&messages,NULL,0,0))
{
/*把虛擬信息翻譯成字元信息*/
TranslateMessage(&messages);
/*發送信息到窗口過程*/
DispatchMessage(&messages);
}

/*返回PostQuitMessage()函數的返回值*/
returnmessages.wParam;
}

『捌』 linux c語言實現,udp協議

UDP協議全稱是用戶數據報協議,在網路中它與TCP協議一樣用於處理數據包,是一種無連接的協議。在OSI模型中,在第四層--傳輸層,處於IP協議的上一層。UDP有不提供數據包分組、組裝和不能對數據包進行排序的缺點,也就是說,當報文發送之後,是無法得知其是否安全完整到達的。UDP用來支持那些需要在計算機之間傳輸數據的網路應用。包括網路視頻會議系統在內的眾多的客戶/伺服器模式的網路應用都需要使用UDP協議。UDP協議從問世至今已經被使用了很多年,雖然其最初的光彩已經被一些類似協議所掩蓋,但是即使是在今天UDP仍然不失為一項非常實用和可行的網路傳輸層協議。

『玖』 C語言實現TCP/IP協議,是否有學習的意義

這很有意義。對c,對網路協議,對計算機系統都會有更深的理解。

蠻好的建議,用raw socket。

熱點內容
峰少微課源碼 發布:2022-08-10 03:15:42 瀏覽:354
linuxtar解壓 發布:2022-08-10 03:07:01 瀏覽:832
java和安卓 發布:2022-08-10 03:07:00 瀏覽:389
java暑假培訓班 發布:2022-08-10 03:02:11 瀏覽:217
不會編譯會懷孕 發布:2022-08-10 03:01:20 瀏覽:515
機械手密碼是多少 發布:2022-08-10 02:59:11 瀏覽:412
發的文件夾 發布:2022-08-10 02:58:27 瀏覽:706
mysql備份sql 發布:2022-08-10 02:58:20 瀏覽:228
ftp區域網無法訪問 發布:2022-08-10 02:57:14 瀏覽:689
開封哪裡賣密碼鎖 發布:2022-08-10 02:56:09 瀏覽:883