chap7.3进程间通信(自学)资料.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
// server 端程序 name.sin_family = AF_INET; name.sin_addr.s_addr = htonl( INADDR_ANY ); name.sin_port = htons( 7 ); bind( sock, (struct sockaddr*) name, sizeof(name)); while ( 1 ) { nbytes = recvfrom( sock, message, MAX, 0, (struct sockaddr*)name, size ); printf(“server got message %s\n”, message ); sendto( sock, message, nbytes, 0, (struct sockaddr*)name, sizeof(name) ); } } // client 端程序 int main() { int sock, n; struct sockaddr_in name; char buffer[MAX]; sock = socket( AF_INET, SOCK_DGRAM, 0 ); init_sockaddr( name, “echoserver”, “7” ); while( fgets( buffer, MAX, stdin) != NULL ) { if( sendto(sock,buffer,strlen(buffer), 0, name, sizeof(name)) 0 ) exit(1); if( n = recvfrom(sock, buffer, MAX, 0, NULL, NULL))0) exit(2); printf(“client received message: %s\n”, buffer ); } close( sock ) ; } UNIX系统为处理服务信息,定义了 servent 结构描述服务相关信息 #include netdb.h struct servent { char * s_name; //服务的正式名称 char** s_aliases; //服务的可选别名 int s_port; //服务使用的端口号 char * s_proto; //与该服务一起使用的协议名 } UNIX系统为获得服务信息的相关函数 #include netdb.h struct servent* getservbyname(char *name,char* proto); Struct servent* getservbyport(int port, char* proto); 字节序 Little-Endian字节序:将低字节存储在起始地址,由Intel体系采用 Big-Endian字节序:将高字节存储在起始地址,由Macintosh体系采用 内存地址增大方向 地址A 地址A+1 07 01 01 07 Big-Endian Little-Endian 16位整数0x0107 主机字节序和网络字节序 主机字节序:将某给定系统所用的字节序称为主机字节序 网络字节序:网络上传输的数据使用规定的字节序,即网络字节序,采用big-endian 主机字节序和网络字节序的转换 UNIX系统中提供了一组函数用来进行网络字节序和主机字节序的转换 #include arpa/inet.h uint16_t htons ( uint16_t hostshort ); uint32_t htonl ( uint32_t hostlong ); uint16_t ntohs ( uint16_t netshort ); uint32_t ntohl ( uint32_t netlong ); 其中h 代表host, n 代表 network.s 代表short l 代表long 第一个函数的意义是将本机器上的long数据转化为网络上的long. 其他几个函数的意义也差不多 套接字地址的数据结构 Internet通信域地址数据结构: #include sys/socket.h struct sockaddr{ ? ?? ?? ?? ?? ? u

文档评论(0)

1112111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档