导航:首页 > 编程语言 > c语言网络协议编程

c语言网络协议编程

发布时间:2023-12-28 00:53:08

① c语言的网络编程特点有哪些(在线等待,答得好马上给分!)

1、你说得用C语言开发网络程序,一定指的是在WIN/UNIX/LINUX/SOLARIS/FreeBSD等多进程/多线程操作系统下的编程,网络编程是基于B/S或者C/S架构的,无论那种,S都需要有多线程或者子进程的处理与客户端通信的能力,DOS下的C是不具备这个能力。另外,网络程序是对操作系统多线程/多进程能力要求很高的应用,所以UNIX下的C编程能很好的满足要求。
2、网络编程只要遵从一种协议,语言是没有限定的,比较各种语言编写的网路应用的特点,归根结底还是回到这种语言已经它存在的操作系统的特点。相比与其他语言开发的网络程序,用UNIX/SOKCET/C这种模式开发的网络应用能最大限度的利用系统资源,同时兼备UNIX的稳定性和C的高效率,是大型网络应用经常采用的方式,例如着名的freeBSD,大量的论坛都是这样的方式。很多网络应用,离开UNIX和C,在重连接负荷的情况下是无法工作的。
3、但是由于高效与通用是一对矛盾,UNIX/C开发的网络应用,比较靠近系统底层,代码的可移植性、可重用性相对于使用winsock编程的WINDOWS/C++方案的网络应用要差一些,windows的MFC已经对网络协议做了很多层的封装,使用C++来继承可以节省大量开发时间。
4、结论,如果你想开发自己全新的网络应用/协议,并且要承担很重的用户访问负荷,那么你可以用C,而且操作系统要用UNIX/LINUX,如果你仅仅希望用已经成熟的internet协议写一些界面漂亮的网络应用,推荐你用WINDOWS/C++方式。

② Linux C语言网络编程问题!

unsigned int dir(char * server) {
int sck;//套接字变量
struct sockaddr_in serv_adr; //远程主机的地址
struct hostent *host; //指向远程主机的指针
unsigned char databuf[FILEBUF_SIZE]; //数据
int bytes = 0, bytesread = 0; //字节数,读取到的字节数

host = gethostbyname(server); //根据远程主机的主机名,得到指向远程主机的指针
if (host == (struct hostent *) NULL) { //如果得到指向远程主机的指针失败,报告错误,并返回
perror("gethostbyname failed");
return 0;
}memset(&serv_adr, 0, sizeof(serv_adr)); //初始化远程主机的地址,结构体内所有成员清零
serv_adr.sin_family = AF_INET; //设置地址类型
memcpy(&serv_adr.sin_addr, host->h_addr, host->h_length);//取出指向远程主机的指针中包含的地址信息,赋给远程主机地址变量
serv_adr.sin_port = htons(SERVICE_PORT);//设置端口号,比如http服务对应80端口,ftp对应21端口

if ((sck = socket(AF_INET, SOCK_STREAM, 0)) < 0) { //如果建立TCP协议的套接字失败,报告错误,并返回
perror("error on socket()");
return 0;
}
if (connect(sck, (struct sockaddr *)&serv_adr, sizeof(serv_adr)) < 0) {//如果使用该套接字连接到远程主机失败,报告错误,并返回
perror("error on connect()");
return 0;
}write(sck, "DI\n\n", 4); //连接成功,发送内容为"DI\n\n"的消息,远程主机收到该消息,解析后生成目录列表,并将目录列表信息传递回来
printf("Remote directory listing:\n");//输出提示信息“远程主机正在生成目录列表”
while ((bytes = read(sck, databuf, FILEBUF_SIZE)) > 0) { //从套接字的数据流中读取远程主机的返回信息(即目录列表),每次读取FILEBUF_SIZE个字节,直到全部读取完毕
write(fileno(stdout), databuf, bytes);//将每次读到的数据,输出到标准输出流(stdout),即屏幕上
bytesread += bytes;//接收到的字节数累加
}

close(sck); /* Close the socket */ //通信完成,关闭套接字,关闭连接

return bytesread; //返回读取到的字节数(即远程主机返回的信息的大小)
}

③ 在windows下,如何用纯C语言实现socket网络编程

mfc只是对socket进行了一些封装,大部分人做网络编程都是用的原始的socket,比如如下接口都可以在c下进行调用
1.socket()
2.bind()
3.connect()
4.listen()
5.accept()
6.send() 和recv()
7.sendto() 和recvfrom()
8.close() 和shutdown()
9.getpeername()
10.gethostname()
这些接口是在Winsock2.h中定义的不是在mfc中定义的,你只需要包含Winsock2.h头文件和Ws2_32.lib库就可以了。

④ 在windows下用C语言如何实现socket网络编程,需要用到哪些头文件或者库

需要用到的头文件包含:

#include <winsock2.h>

#include <windows.h>

与Linux环境下socket编程相比,windows环境多了一个步骤:启动或者初始化winsock库

Winsock,一种标准API,一种网络编程接口,用于两个或多个应用程序(或进程)之间通过网络进行数据通信。具有两个版本:

Winsock 1:

Windows CE平台支持。

头文件:WinSock.h

库:wsock32.lib

Winsock 2:

部分平台如Windows CE貌似不支持。通过前缀WSA可以区别于Winsock 1版本。个别函数如WSAStartup、WSACleanup、WSARecvEx、WSAGetLastError都属于Winsock 1.1规范的函数;

头文件:WinSock2.h

库:ws2_32.lib

mswsock.h用于编程扩展,使用时必须链接mswsock.dll

(4)c语言网络协议编程扩展阅读

winsock库的加载与卸载:

加载:int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);

加载成功,返回值为0。

WORD wVersionRequested:加载的winsock版本,使用宏MAKEWORD(x, y),x表示高字节,y表示低字节。然而使用时MAKEWORD(2, 2)。高字节与低字节相同~~

LPWSADATA lpWSAData:WSADATA结构的指针,传入参数后,系统帮助我们填充版本信息。有兴趣的可以看看结构体内容,不过基本用不着。

卸载:int WSACleanup(void);比起加载,卸载的函数真是轻松愉快。

⑤ c语言的网络编程特点有哪些(在线等待,答得好马上给分!)

1. C语言的特点
C语言是一种广受欢迎的结构化程序设计语言,具有极强的生命力.
"C语言无所不能!" :适用面比较广,具有高级语言的优点和低级语言特点
与硬件无关,可移植性强
C语言是一门简洁语言:仅有32个关键字,9种控制语句
在所有高级语言中,目标代码质量高,运行效率最高
结构化,模块化语言,非常适合结构化程序设计.
2.结构化程序设计方法
结构化程序设计方法强调程序设计风格和程序结构的规范化,提倡清晰的结构.
特点:
自顶向下,逐步细化:将问题分解为子问题,将子问题分解为再小的模块.直到该模块我们可以很容易地求解为止.
模块化设计:对每个模块,用结构化的方法加以设计.
结构化编码:对每个模块,分别编写对应的函数.
目标:
便于多人分工协作完成大型软件;便于代码维护;
C语言的编程
3. C语言基本概念
Hello World! 示例
int main()
{ printf("Hello, world!");
return 0; }
函数 结构化,模块化的基础
主函数main()
库函数:数学函数,字符串函数,io函数,内存分配函数
scanf, printf,…
C语言的编程
C语言基本概念(数据表达)
数据类型:整型,实型,字符型
数组:同种数据类型的元素的集合;下标引用
指针: (基本要求:看懂别人的程序)
注:建议掌握计算机硬件工作原理,如直接寻址,间接寻址;至少掌握变量的存储方式 (《C程序设计》p201)
1) 指针即地址;指针变量是用于存放地址的变量
2) 指针可以与整型变量一样运算;
3)★ 指针必须具备合法地址才可用;
C语言的编程
C语言基本概念(数据表达)
结构 (构造类型)
是由不同数据类型的数据组成的集合体;
struct student /*定义结构体类型*/
{ char name[20];
int sex;
int age;
char addr[100]; };
注:结构体变量不能作为一个整体参加数据处理;
struct student Wang2;
Wang2.age=22;
C语言的编程
C语言基本概念(程序结构)
表达式:算术,关系,逻辑,赋值,函数
语句
顺序结构,选择结构(if语句,switch语句),
循环结构(while语句,for语句与do while语句)
函数:输入输出函数
文件:永久保存数据的方式
流式文件;FILE结构体;文件io函数;(p309)
C程序的编写与上机调试
4. C程序的编写与上机调试
Hello World! 示例
cl
tc2.0 (略)
vc6.0: 规范的project操作示范
(1) new一个空的基于console的project;
(2) 创建c文件,并输入代码;
(3) 将c文件加入project;
(4) 编译,调试,运行;
对软件开发成本高和进度估计不准确.
用户对已完成的"软件系统"不满意.
软件产品的质量不可靠.
软件的维护困难,维护的人员与费用不断增加.
缺乏完整,正确的文档资料.
软件成本在计算机系统中所占比例逐年上升.
软件的发展跟不上硬件的发展和用户的要求.
软件的规模非常庞大,多人共同开发,必须有严格和科学的管理.
软件开发过分依赖于个人的智力劳动和经验.
学习指针最好是先学些计算机硬件工作的原理,例如:直接寻址,间接寻址等,只有了解了这些内容以后,你再学指针就比较容易理会,毕竟C语言是一门介于机器语言与高级语言中间的语言,没有一些硬件工作知识是很难领悟它的真谛的.
1.指针是地址变量:它的值有两种:其一是地址,其二是内容.不同的表达方式可以取不同的值,这有点象一个家庭地址在不同的场合标识的人物也不同.例如:父母亲在他们的单位所登记的家庭地址就代表他们自己,而你在学校中登记的同样的家庭地址就代表你自己.
2.指针是可以运算的,它的运算法则与变量是一致的.
另外,在编写一个程序时,除非万不得已,一般不要使用指针变量.建议各位对于指针只要能看懂就行!
对软件开发成本高和进度估计不准确.
用户对已完成的"软件系统"不满意.
软件产品的质量不可靠.
软件的维护困难,维护的人员与费用不断增加.
缺乏完整,正确的文档资料.
软件成本在计算机系统中所占比例逐年上升.
软件的发展跟不上硬件的发展和用户的要求.
软件的规模非常庞大,多人共同开发,必须有严格和科学的管理.
软件开发过分依赖于个人的智力劳动和经验.
学习指针最好是先学些计算机硬件工作的原理,例如:直接寻址,间接寻址等,只有了解了这些内容以后,你再学指针就比较容易理会,毕竟C语言是一门介于机器语言与高级语言中间的语言,没有一些硬件工作知识是很难领悟它的真谛的.
1.指针是地址变量:它的值有两种:其一是地址,其二是内容.不同的表达方式可以取不同的值,这有点象一个家庭地址在不同的场合标识的人物也不同.例如:父母亲在他们的单位所登记的家庭地址就代表他们自己,而你在学校中登记的同样的家庭地址就代表你自己.
2.指针是可以运算的,它的运算法则与变量是一致的.
另外,在编写一个程序时,除非万不得已,一般不要使用指针变量.建议各位对于指针只要能看懂就行!
操作系统,科学计算,自然语言处理…….
C语言是一门简洁语言
简单:仅有32个关键字,9种控制语句(参见附录2).在所有高级语言中,关键字最少的.
简练:在C程序中一行代码可以表达的内容,在别的语言中可能要用好几行代码
C语句: int a[10];
PASCAL:VAR a:ARRAY[1..10] OF INTEGER
生成机器码质量高. 程序执行效率高.仅比汇编程序生成的代码效率低10%~20%.在所有高级语言中,代码执行效率最高的.
学习C语言的难点
C语言:
限制少,灵活性大.使程序设计人员有较大的自由度,以适应宽广的应用面.
引出的问题:
容易出错
技巧性强
因此,C语言虽然很简洁,但学习起来,比Fortran, Basic等高级语言要困难.
怎样学好C语言
多阅读别人书写的结构良好的程序
操作系统,科学计算,自然语言处理…….
C语言是一门简洁语言
简单:仅有32个关键字,9种控制语句(参见附录2).在所有高级语言中,关键字最少的.
简练:在C程序中一行代码可以表达的内容,在别的语言中可能要用好几行代码
C语句: int a[10];
PASCAL:VAR a:ARRAY[1..10] OF INTEGER
生成机器码质量高. 程序执行效率高.仅比汇编程序生成的代码效率低10%~20%.在所有高级语言中,代码执行效率最高的.
学习C语言的难点
C语言:
限制少,灵活性大.使程序设计人员有较大的自由度,以适应宽广的应用面.
引出的问题:
容易出错
技巧性强
因此,C语言虽然很简洁,但学习起来,比Fortran, Basic等高级语言要困难.
怎样学好C语言
多阅读别人书写的结构良好的程序
操作系统,科学计算,自然语言处理…….
C语言是一门简洁语言
简单:仅有32个关键字,9种控制语句(参见附录2).在所有高级语言中,关键字最少的.
简练:在C程序中一行代码可以表达的内容,在别的语言中可能要用好几行代码
C语句: int a[10];
PASCAL:VAR a:ARRAY[1..10] OF INTEGER
生成机器码质量高. 程序执行效率高.仅比汇编程序生成的代码效率低10%~20%.在所有高级语言中,代码执行效率最高的.
学习C语言的难点
C语言:
限制少,灵活性大.使程序设计人员有较大的自由度,以适应宽广的应用面.
引出的问题:
容易出错
技巧性强
因此,C语言虽然很简洁,但学习起来,比Fortran, Basic等高级语言要困难.
怎样学好C语言
多阅读别人书写的结构良好的程序
操作系统,科学计算,自然语言处理…….
C语言是一门简洁语言
简单:仅有32个关键字,9种控制语句(参见附录2).在所有高级语言中,关键字最少的.
简练:在C程序中一行代码可以表达的内容,在别的语言中可能要用好几行代码
C语句: int a[10];
PASCAL:VAR a:ARRAY[1..10] OF INTEGER
生成机器码质量高. 程序执行效率高.仅比汇编程序生成的代码效率低10%~20%.在所有高级语言中,代码执行效率最高的.
学习C语言的难点
C语言:
限制少,灵活性大.使程序设计人员有较大的自由度,以适应宽广的应用面.
引出的问题:
容易出错
技巧性强
因此,C语言虽然很简洁,但学习起来,比Fortran, Basic等高级语言要困难.
怎样学好C语言
多阅读别人书写的结构良好的程序
操作系统,科学计算,自然语言处理…….
C语言是一门简洁语言
简单:仅有32个关键字,9种控制语句(参见附录2).在所有高级语言中,关键字最少的.
简练:在C程序中一行代码可以表达的内容,在别的语言中可能要用好几行代码
C语句: int a[10];
PASCAL:VAR a:ARRAY[1..10] OF INTEGER
生成机器码质量高. 程序执行效率高.仅比汇编程序生成的代码效率低10%~20%.在所有高级语言中,代码执行效率最高的.
学习C语言的难点
C语言:
限制少,灵活性大.使程序设计人员有较大的自由度,以适应宽广的应用面.
引出的问题:
容易出错
技巧性强
因此,C语言虽然很简洁,但学习起来,比Fortran, Basic等高级语言要困难.
怎样学好C语言
多阅读别人书写的结构良好的程序

阅读全文

与c语言网络协议编程相关的资料

热点内容
世界史纲pdf 浏览:129
湖北社保年审app叫什么名字 浏览:848
迈达克云服务器 浏览:595
mfc深入浅出从mfc设计到mfc编程 浏览:79
萤石云服务器连接设置 浏览:323
中国名着pdf 浏览:590
华为服务器设备序列号怎么看 浏览:319
跑永辉生活配送用什么app 浏览:147
ug识别符号命令在哪里 浏览:719
pdf文件改文字 浏览:732
查询qq号剑灵服务器地址 浏览:552
国家反诈中心app为什么要刷脸 浏览:303
iphone怎么修改dns服务器地址 浏览:85
bandizip解压位置 浏览:168
服务器的防火墙如何访问 浏览:306
javagoto关键字 浏览:847
广州少儿编程加盟排名榜 浏览:122
51单片机th0 浏览:292
冠军交易pdf 浏览:208
excelword转换成pdf 浏览:389