社区
软件水平考试
帖子详情
网络设计师的朋友 help me !!
xiangyi
2003-09-28 01:17:09
有谁可以告诉我,2001年网络设计师下午试题的那个SOCKET程序的第一空为什么要填“argc!=2”呢
...全文
50
1
打赏
收藏
网络设计师的朋友 help me !!
有谁可以告诉我,2001年网络设计师下午试题的那个SOCKET程序的第一空为什么要填“argc!=2”呢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xiangyi
2003-09-28
打赏
举报
回复
请阅读以下说明和Socfort程序,将应填 __(n)__ 处的字句写在答题纸的对应栏内。
【说明】
网络应用的基本模型是客户机/服务器模型,这是一个不对称的编程模型,通信的双方扮演不同的角色:客户机和服务器。
以下是一个简单的客户机程序(服务器程序略),其工作过程非常简单:客户机与服务器建立连接后,接收服务器向客户机返回的一条消息。
程序中用到了两种结构 hostent 与 sockaddr_in:
hostent类型的结构定义
struct hostent { char *h_name ; //主机的正式名称
char * *h_aliases ; //别名列表
int h_addrtype ; //主机地址类型:AF_XXX
lnt H_length; //主机地址长度:4 字节(32 位)
char * *h_addr_list;//主机 IP 地址列表 }
#define h_addr h_addr_list[0]
sockaddr_in 类型的结构定义,sockaddr_in 是通用套接字结构 sockaddr 在 TCP/IP 协议下
的结构重定义,为 TCP/IP 套接字地址结构。
Struct sockaddrin {
short int sin_family ;//地址类型 AF_XXX,其中 AF_INET 为 TCP/IP 专用
unsigned short int sin_port; //端口号
struct in_addr sin_addr; //Internet 地址
//端口号以及 Internet 地址使用的是网络字节顺序,需要通过函数 htons 转换
}
struct iN_addr {
_u32 s_addr; //类型为 unsignel_long
}
程序中使用到了多个函数:
struct hostent * gethostbyname( const char *hostname);
函数 gethostbyname 查询指定的域名地址对应的 IP 地址,返回一个 hostent结构的指针,如果不成功返回 NULL。
int_socket(int domain,int_type,int protocol);
函数 socket 创建一个套接字描述符,如果失败返回 -1。domain 为地址类型,type为套接字类型,本题中为 SOCK_STREAM ;protocol 指定协议,本题中为 0 。
int connect( int sockfd,struct sockaddr *servaddr, int addrlen);
函数connect与服务器建立一个连接,成功返回 0,失败返回- 1。servaddr 为远程服务器的套接字地址,包括服务器的 IP 地址和端口号;addrlen 为地址的长度。
int read( int fd,char *buf,int len);
int write( int fd,char *buf,int len);
函数read和write从套接字读和写数据,成功返回数据量大小,否则返回 -1。buf 指定数据缓冲区,len 指定接收或发送的数据量大小。
【socket程序】
//程序中引用的头文件略
#define PORT 3490
//定义端口号为 3490
int main( int argc,char *argv[] )
{ int sockfd,nbytes; //套接字描述符、读入缓冲区的字节数
char buf[1024]; //缓冲区
struct hostent *he; //主机信息类型
struct sockaddr_in srvaddr;//Internet套接字结构
if ( __(1)__ )
{ perror( "调用参数为零,请输入服务器的主机名!\n" ); exit(1);}
if ( __(2)__ ) //如果通过主机名没有获得对应的主机信息就提示用户
{ perror("无法通过主机名获得主机信息!\n" ); exit(1);}
if ( __(3)__ ) //在无法创建套接字时,提示用户
{ perror("无法创建套按字!\n" ); exit(1);}
bzero( &srvaddr,sizeof(srvaddr));//置空 srvaddr
srvaddr,sin_family = AF_INET;
srvaddr,sin_port:__(4)__ ;srvaddr.sin_addr:__(5)__ ;
//设置套接字结构的各项信息,其中的地址来自于域名查询后的 hp 变量
if ( connect( sockfd,__(n)__ ,sizeof( struct sockaddr)) == -1 )
{ perror("连接失败!\n" ); exit(1);}
//连接服务器,如果失败则提示用户
if (( nbytes = read ( sockfd,buf,MAXDATASIZE)) == -1 )
{ perror( "读失败!\n" ); exit(1);}
//从套容接字中读出数据
buf[nbytes] = '\0';
printf("读到的内容:%s",buf) ;
close( sockfd) ;
//打印数据并关闭套接字
}
游戏引导页界面UI设计SKETCH源文件.zip
游戏开发资源,游戏UI,游戏GUI,游戏图标,PSD格式,XD格式,PNG下载,源文件,可编辑下载,游戏购物充值界面,宝石,图标,PS格式,AI格式等,游戏APP
基于51单片机老人防跌倒体温检测GSM短信报警系统
本设计由STC89C52单片机电路+ADXL345加速度传感器电路+按键电路+蜂鸣器报警电路+DS18B20温度传感器电路+LED灯电路+GSM模块电路+电源电路组成。 功能: 1、板子竖直放置的时候,蜂鸣器不报警,板子歪倒一定角度,则蜂鸣器鸣叫报警。一段时间约15s未回复正确状态,GSM发送报警信息给手机:
Help
me!!。 2、如果温度超过38度,蜂鸣器报警,持续温度过高约15s左右,同时短信报警:has a cold 3、设计带有误报警按键,蜂鸣器报警的时候,如果老人认为是误报警,则按键按下,蜂鸣器停止报警,如果持续问题存在还会报警。 4、短信处理过程有指示灯显示。 资料内容: 程序源码、电路原理图、任务书、开题报告、参考论文、系统框图、程序流程图、器件清单、器件资料、答辩技巧等等
网页取色器
网页取色器
Help
-Wanted:请帮助我们。 我们需要帮助。 嘎嘎嘎嘎嘎嘎..
把招工广告 :megaphone: 帮助! 帮帮忙! 本文档旨在提供有关我正在寻找的帮助的详细信息。 我的名字叫Oliver( ),我作为一个项目启动了 。 我真的很乐意让尽可能多的人参与进来,使之成为开发人员,
设计师
和其他任何人找到和抓取图标和插图的好地方。 :camera_with_flash: 强制截图 IconIconduck是什么? 非常简单:它是开放源代码图标,插图和图形的集合。 那里有成千上万(也许是数百万),而Iconduck希望将它们融合在一起。 此外,我们的目标是: 赞扬
设计师
,希望能帮助他们付账 通过构建对开发人员具有独特价值的东西,使Iconduck尽可能有用(例如,以API为先,与代码编辑器进行集成等) 有一个惊人的用户体验。 开发人员以效率为荣,因此拥有出色的UX来支持它是关键(例如,键盘快捷键,直观的标签等) 为想要为开源做出贡献的人们提供一个这样做的地方。 我已经学会了成为OSS社区的一员,并且
Soka-社会媒体品牌海报模板_60设计布局_psd素材下载.zip
Soka-社会媒体品牌海报模板(60设计布局).psd素材下载 PSD、品牌海报模板、时尚的海报模板、海报模板文件
软件水平考试
2,959
社区成员
22,569
社区内容
发帖
与我相关
我的任务
软件水平考试
就计算机等级考试、软件初、中、高级不同级别资格考试相关话题交流经验,共享资源。
复制链接
扫一扫
分享
社区描述
就计算机等级考试、软件初、中、高级不同级别资格考试相关话题交流经验,共享资源。
c1认证
c4java
c4前端
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章