当前位置:首页 » 编程语言 » 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。

热点内容
python递归创建目录 发布:2024-05-02 21:02:38 浏览:280
数据库分离与附加 发布:2024-05-02 20:56:59 浏览:39
搭建我的世界java服务器详细篇 发布:2024-05-02 20:56:59 浏览:941
string函数java 发布:2024-05-02 20:36:49 浏览:801
phplinux服务器 发布:2024-05-02 20:30:23 浏览:754
安卓在哪里安装网易官方手游 发布:2024-05-02 20:15:07 浏览:409
qq宠物的文件夹 发布:2024-05-02 20:13:46 浏览:366
做脚本挂 发布:2024-05-02 19:09:14 浏览:931
打王者开最高配置哪个手机好 发布:2024-05-02 19:08:31 浏览:351
python字典使用 发布:2024-05-02 19:01:14 浏览:134