搜题
网友您好,请在下方输入框内输入要搜索的题目:
搜题
题目内容 (请给出正确答案)
提问人:网友aoyoudeyu 发布时间:2022-01-06
[主观题]

请阅读以下说明和Socfort程序,将应填(n)处的字句写在对应栏内。 网络应用的基本模型是客户机/服务

请阅读以下说明和Socfort程序,将应填(n)处的字句写在对应栏内。

网络应用的基本模型是客户机/服务器模型,这是一个不对称的编程模型,通信的双方扮演不同的角色:客户机和服务器。

以下是一个简单的客户机程序(服务器程序略),其工作过程非常简单:客户机与服务器建立连接后,接收服务器向客户机返回的一条消息。

程序中用到了两种结构hostent与sockaddr_in:

hostent类型的结构定义如下:

struct hostent { char * h_name; //主机的正式名称

char * * h-aliases; //别名列表

int h_addrtype; //主机地址类型:AF-XXX

int H_length; //主机地址长度:4 B(32 b)

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/P专用

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,im-type,int protoco1);

函数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(intfd,char * bur,int len);

int write(intfd,char * buf,int len);

函数read和write从套接字读和写数据,成功返回数据量大小,否则返回-1。buf指定数据缓冲区,len指定接收或发送的数据量大小。

[Socket程序]

//程序中引用的头丈件略

definePORT 3490

//定,义端口号为3490

int main(int argc,char * argv[])

{int tsockfd,nbytes;//套接字描述符、读入缓冲区的字节数

char buf[1024];//缓冲区

struct hostent * he;//主机信息类型

struct (1) srvadd;//Internet套接字结构

if(argc!=2)

{perror(“调用参数为零,请输入服务器的主机名!\n”);exit(1);}

if((2))//如果通过主机名没有获得对应的主机信息就提示用户

{perror(“无法通过主机名获得主机信息!\n”);exit(1);}

if((3))//在无法创建套接字时,提示用户

{perror(“无法创建套按字!\n”);exit(1);}

bzero(&srvaddr, (4));//置空srvaddr

sraddr,SIR_family=AF_INET;

srvaddr,sln_port:htons(PO日T);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);

CIose(SOCkfd);

//打印数据并关闭套接字

简答题官方参考答案 (由简答题聘请的专业题库老师提供的解答)
查看官方参考答案
更多“请阅读以下说明和Socfort程序,将应填(n)处的字句写在对应栏内。 网络应用的基本模型是客户机/服务”相关的问题
第1题
● 试题四 请阅读以下说明和Socfort程序,将应填(n)处的字句写在答题纸的对应栏内。 【说明】 网络

● 试题四

请阅读以下说明和Socfort程序,将应填(n)处的字句写在答题纸的对应栏内。

【说明】

网络应用的基本模型是客户机/服务器模型,这是一个不对称的编程模型,通信的双方扮演不同的角色:客户机和服务器。

以下是一个简单的客户机程序(服务器程序略),其工作过程非常简单:客户机与服务器建立连接后,接收服务器向客户机返回的一条消息。

程序中用到了两种结构hostent与sockaddr_in:

hostent类型的结构定义如下:

struct hostent { char*h_name;//主机的正式名称

char**h_aliases;//别名列表

int h_addrtype;//主机地址类型:AF-XXX

int H_length;//主机地址长度:4 B(32 b)

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,im-type,int protoco1);

函数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*bur,int len);

int write(int fd,char*buf,int len);

函数read和write从套接字读和写数据,成功返回数据量大小,否则返回-1。buf指定数据缓冲区,len指定接收或发送的数据量大小。

【Socket程序】

//程序中引用的头文件略

#definePORT 3490

//定义端口号为3490

int main(int argc,char*argv[])

{int sockfd,nbytes;//套接字描述符、读入缓冲区的字节数

char buf[1024];//缓冲区

struct hostent*he;//主机信息类型

struct (1) srvaddr;//Internet套接字结构

if(argc!=2)

{perror("调用参数为零,请输入服务器的主机名!\n");exit (1) ;}

if((2) )//如果通过主机名没有获得对应的主机信息就提示用户

{perror("无法通过主机名获得主机信息!\n");exit (1) ;}

if((3) ) //在无法创建套接字时,提示用户

{perror("无法创建套按字!\n");exit (1) ;}

bzero(&srvaddr, (4) );//置空srvaddr

sraddr,sin_family=AF_INET;

srvaddr,sin_port: htons(PORT);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);

//打印数据并关闭套接字

}

点击查看答案
第2题
试题二 请阅读以下说明和Socket程序,将应填入(),失败返回-1。 write_requ函数为客户机发送请求的函数;read_requ函数为服务器获取请求的函数
点击查看答案
第3题
阅读以下说明及Visual Basic程序代码,将应填入(n)处的字句写在对应栏内。 【说明】 以下程序为求行

阅读以下说明及Visual Basic程序代码,将应填入(n)处的字句写在对应栏内。

【说明】

以下程序为求行列式X(5,5)的值S。

【Visual Basic代码】

Private Function col (byval x (5,5 ) as integer ) as long

dim fesult as long

dim temp as long

dim I as integer

dim j as integer

dim k as imeger

result = 0

for I = to 5

(1)

for j = 1 to 5

if I+j>6 then

k= (1+j ) mod 5

else

k=1

endif

temp=temp*x (k,j )

(2)

result=(3)

(4)

(5)

End function

点击查看答案
第4题
阅读以下说明和JAVA 2代码,将应填入(n)处的字句写在对应栏内。 [说明] 以下程序为类类型的变量应

阅读以下说明和JAVA 2代码,将应填入(n)处的字句写在对应栏内。

[说明]

以下程序为类类型的变量应用实例,通过异常处理检验了类CCircle的变量的合法性,即参数半径应为非负值。仔细阅读代码和相关注释,将程序补充完整。

[JAVA代码]

//定义自己的异常类

class CCircleException extends Exception

{

}

// 定义类 CCircle

class CCircle

{

private double radius;

public void setRadius (double r ) (1)

{

if (r<0 ) {

(2)

}

else

(3)

}

Public void show () {

System. out. println ("area="+3.14*radius*radius );

}

}

public class ciusample

{

public static void main (String args[] )

{

CCircle cir=new CCircle();

(4) {

cir. setRadius (-2.0 )

}

(5)

{

System. out. println (e+" throwed" ) ;

}

cir. show() ;

}

}

点击查看答案
第5题
阅读以下说明和Java程序,将应填入(n)处的字句写在对应栏内。 [说明] 下面程序实现十进制向其它

阅读以下说明和Java程序,将应填入(n)处的字句写在对应栏内。

[说明]

下面程序实现十进制向其它进制的转换。

[Java程序]

ClasS Node{

int data;

Node next;

}

class Transform{

private Node top;

public void print(){

Node p;

while(top!=null){

P=top;

if(P.data>9)

System.out.print((char)(P.data+55));

else

System.out.print(p.data);

top=p.next;

}

}

public void Trans(int d,int i){//d为数字;i为进制

int m;

(1) n=false;

Node p;

while(d>0){

(2);

d=d/i;

p=new Node();

if((3) ){

p.data=m;

(4);

top=P;

n=true;

}

else{

p.data=m;

(5);

top=P;

}

}

}

}

点击查看答案
第6题
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。 【程序2.1说明】 求所有满足如下

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

【程序2.1说明】

求所有满足如下条件的三位数:它除以11得的商等于它各位数字的平方和。例如 550,除以11商为50,50=52+52+02。

【程序2.1】

void main()

{

int i, j,n,s;

for(i=100;i<=999;i++)

{

n=i;

j=n/11;

s=0;

while((1))

{

(2)

n/=10;

}

if((3))

printf("%d\t",i);

}

}

【程序2.2说明】

本程序输入一字符串,将其中的大写字母改变成小写字母。

【程序2.2】

void main()

{

int i=0;

char s[120];

scanf("%s",s);

while((4))

{

if((5))

s[i]=s[i]- 'A'+'a';

i++;

}

printf("%s\n",s);

}

点击查看答案
第7题
阅读以下说明、Java代码,将应填入(n)处的字句写在对应栏内。【说明】 本程序输出10000之内的所有完全

阅读以下说明、Java代码,将应填入(n)处的字句写在对应栏内。

【说明】

本程序输出10000之内的所有完全数。完全数是指等于其所有因子和(包括1,但不包括这个数本身)的数。例如:6=1×2×3,6=1+2+3,则6是一个完全数。

【程序】

public class PerfectNum

{

Public static void main(String args[])

{

int count=1;

for(int i=1; i<10000; i++)

{

int y=0;

for(int j=1; j<i; j++)

if((1))

y=(2)

if((3))

{

System.out.print((4) +String.valueOf('\t'));

(5)

If(count%3==0)

System.out.printin();

}

}

}

点击查看答案
第8题
阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。[说明] 本程序中预设了若干个用户名和

阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。

[说明]

本程序中预设了若干个用户名和口令。用户输入正确的用户名后,可以查找对应的口令,一旦输入结束标记“end”,程序结束。

[C++程序]

include <iostream. h>

include <string. h>

class User

{ protected:

char user[10];

char pass[7];

public:

User(char[ ],char[]);

(1) {return user;}

(2) {return pass;}

};

User::User(char u[],char p[])

{ strcpy(user,u);

strcpy(pass,p); }

void main()

{ User ua[]={User("Li","123456"),User("wang","654321"),User("Song","666666")

char name[10];

while(1)

cout< < "输入用户名:";

cin> >name;

if((3)= =0) break;

for(int i=0;i<3;i+ +)

if(strcmp(name,ua[i].getuser()) = =0){

cout< <"密码:" < < ua[i].getpass() < <endl;

(4);

if((5))cout< <"该用户不存在!" < <endl;

}

}

点击查看答案
第9题
阅读以下说明和Visual Basic 码,将应填入(n)处的字名写在的对应栏内 [说明] 这是一个用户名校验

阅读以下说明和Visual Basic 码,将应填入(n)处的字名写在的对应栏内

[说明] 这是一个用户名校验程序,如用户名正确,即输出欢迎字样,否则,弹出警告窗并直接退出程序。下面是实现上述功能的程序,请填空。“Option Explicit”此语句的作用:强制显示声明

Dim UserName (2) As String

Dim Flag As Boolean

(1)

Private Sub Form. _ Load()

UserName (0) = "AA": UserName (1) = "BB": UserName(2) = "CC"

Flag = False

inputName = InputBox(“请输入名称:“,”身份确认”“,”)

Dim i As Integer

For i = 0 To False

If inputName = UserName(i) Then

(2)

End If

Next i

If (3) Then

MsgBox “用户身份确失败!退出应用”, vbOKOnly, “警告”

End

End If

End Sub

Private Sub Form_ Paint()

(4)

End Sub

点击查看答案
第10题
阅读以下说明及Visual Basic 程序代码,将应填入(n)处的字句写在对应栏内。[说明] 本程序求3~100之

阅读以下说明及Visual Basic 程序代码,将应填入(n)处的字句写在对应栏内。

[说明]

本程序求3~100之间的所有素数(质数)并统计个数;同时将这些素数从小到大依次写入顺序文件E: \dataout.txt;素数的个数显示在窗体Form1上。

[Visual Basic 代码]

Private Sub Command1_ Click ()

Dim count as integer, flag as Boolean

Dim t1 as Integer, t2 as Integer

(1)

Count=0

For t1=3 to 100

Flag=Tree

For t2=2 to Int(Sqr (t1 ) )

If (2) Then flag=False

Next t2

(3)

count=(4)

write 1, t1

End if

Next t1

(5)

Close 1

End Sub

点击查看答案
重要提示: 请勿将账号共享给其他人使用,违者账号将被封禁!
查看《购买须知》>>>
重置密码
账号:
旧密码:
新密码:
确认密码:
确认修改
购买搜题卡查看答案
购买前请仔细阅读《购买须知》
请选择支付方式
微信支付
支付宝支付
点击支付即表示你同意并接受《服务协议》《购买须知》
立即支付
搜题卡使用说明

1. 搜题次数扣减规则:

功能 扣减规则
基础费
(查看答案)
加收费
(AI功能)
文字搜题、查看答案 1/每题 0/每次
语音搜题、查看答案 1/每题 2/每次
单题拍照识别、查看答案 1/每题 2/每次
整页拍照识别、查看答案 1/每题 5/每次

备注:网站、APP、小程序均支持文字搜题、查看答案;语音搜题、单题拍照识别、整页拍照识别仅APP、小程序支持。

2. 使用语音搜索、拍照搜索等AI功能需安装APP(或打开微信小程序)。

3. 搜题卡过期将作废,不支持退款,请在有效期内使用完毕。

请使用微信扫码支付(元)

订单号:

遇到问题请联系在线客服

请不要关闭本页面,支付完成后请点击【支付完成】按钮
遇到问题请联系在线客服
恭喜您,购买搜题卡成功 系统为您生成的账号密码如下:
重要提示:请勿将账号共享给其他人使用,违者账号将被封禁。
发送账号到微信 保存账号查看答案
怕账号密码记不住?建议关注微信公众号绑定微信,开通微信扫码登录功能
警告:系统检测到您的账号存在安全风险

为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!

- 微信扫码关注简答题 -
警告:系统检测到您的账号存在安全风险
抱歉,您的账号因涉嫌违反简答题购买须知被冻结。您可在“简答题”微信公众号中的“官网服务”-“账号解封申请”申请解封,或联系客服
- 微信扫码关注简答题 -
请用微信扫码测试
欢迎分享答案

为鼓励登录用户提交答案,简答题每个月将会抽取一批参与作答的用户给予奖励,具体奖励活动请关注官方微信公众号:简答题

简答题官方微信公众号

简答题
下载APP
关注公众号
TOP