Unix Socket编程

Unix Socket编程

ID:41032651

大小:128.00 KB

页数:35页

时间:2019-08-14

Unix Socket编程_第1页
Unix Socket编程_第2页
Unix Socket编程_第3页
Unix Socket编程_第4页
Unix Socket编程_第5页
资源描述:

《Unix Socket编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、UnixSocket编程.Socket Socket是TCP/IP网络的API,可以用它来开发网络应用程序 Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符.Socket的建立 intsocket(intdomain, inttype, intprotocol) 函数返回:         一个整型的Socket描述符,可以在后面调用它 参数说明:         intdomain    指明所使用的协议族,通常是PF_INET,表示网络(TCP/IP)协议族                        说明我们网络程序

2、所在的主机采用的通讯协族(AF_UNIX和AF_INET等).        AF_UNIX: 只能够用于单一的Unix系统进程间通信,        AF_INET: 是针对Internet的,因而可以允许在远程主机之间通信          (当我们mansocket时发现domain可选项是PF_*而不是AF_*,因为glibc是posix的实现所以用PF代替了AF,不过我们都可以使用的)         inttype      指定socket的类型,通常是SOCK_STREAM流式Socket这样会提供按顺序的,可靠,双向,面向连接的

3、比特流和SOCK_DGRAM数据报式Socket这样只会提供定长的,不可靠,无连接的通信         intprottocol 通常为0由于我们指定了type,所以这个地方我们一般只要用0来代替就可以了 应用示例:         intsockfd=socket(PF_INET, SOCK_STREAM,0);.Socket配置  Socket描述符是一个指向内部数据结构的指针,它指向描述符表入口。调用Socket函数时,socket执行体将建立一个Socket,实际上"建立一个Socket"意味着为一个Socket数据结构分配存储空间。S

4、ocket执行体为你管理描述符表。  两个网络程序之间的一个网络连接包括五种信息:通信协议、本地协议地址、本地主机端口、远端主机地址和远端协议端口。Socket数据结构中包含这五种信息。  通过socket调用返回一个socket描述符后,在使用socket进行网络传输以前,必须配置该socket:    1)面向连接的socket客户端通过调用Connect函数在socket数据结构中保存本地和远端信息。    2)无连接socket的客户端和服务端以及面向连接socket的服务端通过调用bind函数来配置本地信息。  Bind函数将socke

5、t与本机上的一个端口相关联,随后你就可以在该端口监听服务请求。  Bind函数原型为:     intbind(intsockfd,structsockaddr*my_addr,intaddrlen);Bind()函数在成功被调用时返回0;出现错误时返回"-1"并将errno置为相应的错误号。     Sockfd    是调用socket函数返回的socket描述符,      my_addr  是一个指向包含有本机IP地址及端口号等信息的sockaddr类型的指针;       addrlen  常被设置为sizeof(structsocka

6、ddr)。      1)structsockaddr结构类型是用来保存socket信息的:        structsockaddr        {        unsignedshortsa_family;  /*地址族,AF_xxx*/          charsa_data[14];          /*14字节的协议地址*/         };       sa_family   一般为AF_INET,代表Internet(TCP/IP)地址族;        sa_data      则包含该socket的IP地址和端口号

7、。     2)sockaddr_in结构类型:       structsockaddr_in     {       shortintsin_family;         /*地址族*/       unsignedshortintsin_port;  /*端口号*/         structin_addrsin_addr;      /*IP地址*/         unsignedcharsin_zero[8];    /*填充0以保持与structsockaddr同样大小sin_zero用来将sockaddr_in结构填充到与st

8、ructsockaddr同样的长度,可以用bzero()或memset()函数将其置为零。*/       };       这个结构更

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

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

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