这是一个基于嵌入式Linux的网络通信系统,
压缩包中包含程序源代码和文档,内容详细。
服务端源程序:
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<string.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<sys/socket.h>
#include<sys/wait.h>
#include<unistd.h>
#include<arpa/inet.h>
#define MAXBUF 1024
int main(int argc,char *argv[])
{
int pid;
int sockfd,new_fd;
socklen_t len;
struct sockaddr_in my_addr,their_addr;
unsigned int myport,lisnum;
char buf[MAXBUF+1];
if(argv[2])
myport=atoi(argv[2]);
else
myport=7575;
if(argv[3])
lisnum=atoi(argv[3]);
else
lisnum=5;
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
perror(&quot;socket&quot;);
exit(EXIT_FAILURE);
}
bzero(&my_addr,sizeof(my_addr));
my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(myport);
if(argv[1])
my_addr.sin_addr.s_addr=inet_addr(argv[1]);
else
my_addr.sin_addr.s_addr=INADDR_ANY;
if(bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))==-1)
{
perror(&quot;bind&quot;);
exit(EXIT_FAILURE);
}
if(listen(sockfd,lisnum)==-1)
{
perror(&quot;listen&quot;);
exit(EXIT_FAILURE);
}
printf(&quot;wait for connect!\n&quot;);
len=sizeof(struct sockaddr);
if((new_fd=accept(sockfd,(struct sockaddr *)&their_addr,&len))==-1)
{
perror(&quot;accept&quot;);
exit(EXIT_FAILURE);
}
else
printf(&quot;server:got connection from %s,port %d,socket %d\n&quot;,inet_ntoa(their_addr.sin_addr),ntohs(their_addr.sin_port),new_fd);
while(1)
{
printf(&quot;newfd=%d\n&quot;,new_fd);
bzero(buf,MAXBUF+1);
printf(&quot;input the message to send:&quot;);
fgets(buf,MAXBUF,stdin);
if(!strncasecmp(buf,&quot;quit&quot;,4))
{
printf(&quot;i will close the connect!\n&quot;);
break;
}
len=send(new_fd,buf,strlen(buf)-1,0);
if(len>0)
printf(&quot;message:%s\t send sucessful,send %dbyte!\n&quot;,buf,len);
else
{
printf(&quot;message'%s' send failure!errno code is %d,errno message is '%s'\n&quot;,buf,errno,strerror(errno));
break;
}
bzero(buf,MAXBUF+1);
len=recv(new_fd,buf,MAXBUF,0);
if(len>0)
printf(&quot;message recv successful:'%s',%dByte recv\n&quot;,buf,len);
else
{
if(len<0)
printf(&quot;recv failure!errno code is %d,errno message is '%s'\n&quot;,errno,strerror(errno));
else
printf(&quot;the other one close quit\n&quot;);
break;
} |