现行的网络协议中TCP/IP协议是最通用的一个,因此,本程序也使用该协议实现网络的互联[4]。
Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。网络的 Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的、无差错的、发送先后顺序一致的、包长度不限和非重复的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用,主要以独立的数据报进行网络传输,数据报的最大长度为32 KB,传输不保证顺序性、可靠性和无重复性,它通常用于单个报文传输或可靠性不重要的场合。根据以上特点,本应用选择流式Socket[1]。
(1)服务器端petaserver.c主要代码如下:
{
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
//创建套接字Socket函数可以调用Socket函数,
该函数返回一个类似于文件描述符的句柄
{
fprintf(stderr,"socket error!n");
exit(1);
}
if(bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct
sockaddr))==-1) //Bind函数将socket与本机上
的一个端口相关联,在该端口监听服务请求
{
fprintf(stderr,"bind error!n");
exit(1);
}
if(listen(sockfd,10)==-1) // Listen函数将一个
套接字转换为被动倾听套接字
{
fprintf(stderr,"listen error!n");
exit(1);
}
if((connfd=accept(sockfd,(struct sockaddr *)&their_addr,
&sin_size))==-1)
//Accept函数从倾听套接字的
完成连接队列中接收客户端连接请求
{
fprintf(stderr,"accept error!n");
exit(1);
}
printf("server:got connection from %sn",inet_ntoa
(their_addr.sin_addr));
if(send(connfd,"successfully connectn",20,0)==-1)
//send函数用来控制对套接字的写操作
{
fprintf(stderr,"send error!n");
exit(1);
}
//显示连接成功,开始接收客户端信息
while((len1=recv(connfd,str,100,0)) > 0)
//recv函数用来控制对套接字的读操作
{
len1=recv(connfd,str,100,0);
printf("n收到字符数:%dn",len1);
str[len1]=0;
printf("Received from client:%sn",str);
}
close(sockfd);//Close函数用来关闭一个
套接字描述符
}
(2)启动服务器
程序编写好后,重新编译,生成image.bin文件,下载该文件。
打开超级终端,系统启动后输入用户名与密码,进入petalinux系统执行下列命令:
[TI]关于三极管V_ceo的理解,在线等,急急急!!我的理解是三极管开路时,管子C极-E极(正向)的最大耐压值。
但是教材中的解释是:C极-E极的反向击穿电压。
为什么说是"反向"而不是“正向”??百思不得啊!!求大神指点!!!可能因为这个
绿色印刷,LED技术开启印刷新时代自从哥本哈根会议敲响世界环保 警钟后,备行各业更加重视环保问题, “低碳”“绿色”等词语铺天盖地的进入 我们的视眼。一直以来印刷业总被冠以 高污染的
便于集成的智能化电源模块监控系统研究 随着电力电子技术的快速发展,开关电源越来越受到重视,尤其是在通信、电力领域中得到了广泛应用。 近年来,为了提高电源使用的方便性和简易性,电源的模块化和集成化成为研究的重要课题。电源采用模块化设计使得