?? linuxserv.c
字號:
//server.c代碼如下:
#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"
#define MYPORT 6000
#define BACKLOG 10
int main()
{
int sockfd,new_fd;
struct sockaddr_in my_addr;
struct sockaddr_in their_addr;
int sin_size;
int i;
char c;
char buf[256];
int numbytes;
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
perror("socket create failed!");
exit(1);
}
my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(MYPORT);
my_addr.sin_addr.s_addr=htonl(INADDR_ANY);
bzero(&(my_addr.sin_zero),8);
if (bind(sockfd,(struct sockaddr*)&my_addr,sizeof(struct sockaddr))==-1)
{
perror("bind failed!");
exit(1);
}
if (listen(sockfd,BACKLOG)==-1)
{
perror("listen failed");
exit(1);
}
while(1)
{
sin_size=sizeof(struct sockaddr_in);
if((new_fd=accept(sockfd,(struct sockaddr*)&their_addr,&sin_size))==-1)
{
perror("accept failed!");
continue;
}
printf("server:got connection from %s\n",inet_ntoa(their_addr.sin_addr));
if(!fork()){
while(1)
{
printf("Send:");
for(i=0;(c=getchar())!='\n'&&i<256;i++)//對輸入的數進行存儲并放到緩存區,如果為視頻數據則由采集模塊拷貝內存區到該該緩存區,然后進行發送
buf[i]=c;
if(strcmp(buf,"exit")==0)
{
close(sockfd);
exit(0);
}
if(send(new_fd,buf,i,0)==-1)
{
perror("send failed!");
close(new_fd);
exit(0);
}
}
}
}
close(new_fd);
while(waitpid(-1,NULL,WNOHANG)>0);
close(sockfd);
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -