📄 server.c
字号:
/*******************************
* ·þÎñÆ÷¶Ë³ÌÐò server.c *
********************************/
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <netinet/in.h>#include <fcntl.h>// µ÷ÓÃopen()¡¢close()º¯ÊýʱʹÓÃ
#define DEVICE_NAME "/dev/led_driver"
/* ¶šÒå·¢¹â¶þŒ«¹ÜLED׎̬¡¡*/
#define LED_ON 0
#define LED_OFF 1
main(){
int sockfd,new_fd;
struct sockaddr_in my_addr;
struct sockaddr_in their_addr;
int sin_size;
char buff[100];
//·þÎñÆ÷¶ËœšÁ¢TCPÐÒéµÄsockedÌלÓ×ÖÃèÊö·û
if((sockfd = socket(AF_INET,SOCK_STREAM,0))==-1)
{
perror("socket");
exit(1);
}
printf("socket success!,sockfd=%d\n",sockfd);
//·þÎñÆ÷¶Ë³õÊŒ»¯sockaddrœá¹¹Ì壬°ó¶š2323¶Ë¿Ú
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(2323);
my_addr.sin_addr.s_addr = INADDR_ANY;
bzero(&(my_addr.sin_zero),8);
//°ó¶šÌלÓ×ÖÃèÊö·ûsockfd
if(bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))==-1)
{
perror("bind");
exit(1);
}
printf("bind success!\n");
//ŽŽœšŒàÌýÌלÓ×ÖÃèÊö·ûsockfd
if(listen(sockfd,10)==-1)
{
perror("listen");
exit(1);
}
printf("listening....\n");
//·þÎñÆ÷×èÈûŒàÌýÌלÓ×Ö£¬Ñ»·µÈŽý¿Í»§¶Ë³ÌÐòÁ¬œÓ
while(1)
{
sin_size = sizeof(struct sockaddr_in);
//Èç¹ûœšÁ¢Á¬œÓ£¬œ«²úÉúÒ»žöȫеÄÌלÓ×Ö
if((new_fd = accept(sockfd,(struct sockaddr *)&their_addr,&sin_size))==-1)
{
perror("accept");
exit(1);
}
//Éú³ÉÒ»žö×Óœø³ÌÀŽÍê³ÉºÍ¿Í»§¶ËµÄ»á»°£¬žžœø³ÌŒÌÐøŒàÌý
if(!fork())
{//¶ÁÈ¡¿Í»§¶Ë·¢À޵ÄÐÅÏ¢
if((recv(new_fd,buff,strlen(buff),0))==-1)
{
perror("recv");
exit(1);
}else{int fd;fd = open(DEVICE_NAME, O_RDWR);while(1)
{
ioctl(fd,LED_OFF);
sleep(1);//ÐÝÃß1ÃëÖÓ
ioctl(fd,LED_ON);
sleep(1);//ÐÝÃß1ÃëÖÓ
}}
printf("%s\n",buff);
//œ«ŽÓ¿Í»§¶ËœÓÊÕµœµÄÐÅÏ¢ÔÙ·¢»Ø¿Í»§¶Ë
if(send(new_fd,"OK,This is Server.",strlen(buff),0)==-1)
perror("send");
/* ±ŸŽÎÍšÐÅœáÊø */
close(new_fd);
exit(0);
}
/* ÏÂÒ»žöÑ»· */
// close(new_fd);
}
close(sockfd);
}
/*
root@1[server]# ./server
server is run: Success
Hello! Client connect.
root@2[client]# .client 192.168.1.99
result: Welcome,This is Server.
#include <stdio.h>
void perror(const char *s)
Êä³ö×Ö·ûŽ®s²¢ŒÓÉÏðºÅºÍ¿Õžñ£¬È»ºóÊÇÒ»žö»»ÐС£
#include <errno.h>
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -