用c语言编写socket程序

用c语言编写socket程序

ID:6045839

大小:92.00 KB

页数:28页

时间:2018-01-01

用c语言编写socket程序_第1页
用c语言编写socket程序_第2页
用c语言编写socket程序_第3页
用c语言编写socket程序_第4页
用c语言编写socket程序_第5页
资源描述:

《用c语言编写socket程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、用C语言编写Socket程序本文的目的在于为初学者提供一个快速的入门指导,用来迅速熟悉用C语言来编写Internet网络应用程序。本文假设读者已经具备了C语言的基本知识和语法,并且读者有使用Uinx/Linux的经验。尽管Uinx/Linux的Socket编程与在Windows下的有一些不同的地方,但是在此我并不想展开。另外,本文所有的程序都在RedHat5.2下编译通过,并且在glibc2.0.7和libc5.3.12两种环境下都没有问题。现在就开始我们的教程吧:)。对一个程序员而言,sockets和底层的文件描述符非常类似(可以在sockets里使用read()和write(

2、)函数),尽管建立一个socket比打开,读取和写入一个文件更为麻烦,但这是由于网络连接比单纯的本地硬盘的读写复杂的多所造成的。通常,sockets用来实现客户机/服务器对。服务器的任务是监听某个特定的端口,当接收到客户端的服务请求时完成相应的服务;客户机的任务是请求服务器完成事先设定好的服务。作为入门级的文章,我们在这里不会使用所有的socket类型和功能,但是我们会向读者提供足够的信息。现在,就让我们开始吧。=+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+=建立一个soc

3、ket:socket()你所要学的socket编程的第一件事就是用socket()建立一个socket:--------#include#includeintsocket(intaf,inttype,intprotocol)-------'intaf'代表地址族或者称为socket所代表的域,通常有两个选项:    AF_UNIX-只在单机上使用。    AF_INET-可以在单机或其他使用DARPA协议(UDP/TCP/IP)的异种机通信。'inttype'代表你所使用的连接类型,通常也有两种情况:    SOCK_STRE

4、AM-用来建立面向连接的sockets,可以进行可靠无误的的数据传输    SOCK_DGRAM-用来建立没有连接的sockets,不能保证数据传输的可靠性。在本文中,我们着重使用AF_INET地址族和SOCK_STREAM连接类型。'intprotocol'通常设定为0。这样的目的是使系统选择默认的由协议族和连接类型所确定的协议。这个函数的返回值是一个文件描述句柄,如果在此期间发生错误则返回-1并且设定了相应的errno。-------#include#includeintsockfd/*soontobesocketfile

5、descriptor*/sockfd=socket(AF_INET,SOCK_STREAM,0)/*errorcheckinghere*/-------如果执行成功,我们就拥有了一个socket的文件句柄,通过这个句柄就可以访问Internet了。=+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+=名字绑定socket:bind()下一步要完成的就是名字绑定工作了:-------#include#includeintbind

6、(intsockfd,structsockaddr*name,intnamelen)-------在这个函数里,sockfd是从socket()调用得到的文件描述句柄。name是一个指向sockaddr类型结构的一个指针。如果地址族被设定为AF_UNIX,这个类型的定义是如下所示:-------structsockaddr{u_shortsa_family;charsa_data[14];};-------在这个结构种,name.sa_family应当被设定为AF_UNIX。name.sa_data应当包含最长为14个字节的文件名,这个文件名用来分配给socket。namelen

7、给出了文件名的具体长度。-------#include#includestructsockaddrname;intsockfd;name.sa_family=AF_UNIX;strcpy(name.sa_data,"/tmp/whatever");sockfd=socket(AF_UNIX,SOCK_STREAM,0)/*errorcheckingcodehere*/bind(sockfd,&name,strlen(name.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。